力扣周赛371复盘(总结与进步)

比赛结果

 第一题

2932. 找出强数对的最大异或值 I - 力扣(LeetCode)

这个由于是简单题,暴力for循环即可

通过结果如下:

 

class Solution {
    public int maximumStrongPairXor(int[] nums) {
        int ans=0;
        for(int i =0;i<nums.length;i++){
            for(int j =i+1;j<nums.length;j++){
                if(Math.abs(nums[i]-nums[j])<=Math.min(nums[i],nums[j]))
                ans=Math.max(ans,nums[i]^nums[j]);
            }
        }
        return ans;
    }
}

第二题

2933. 高访问员工 - 力扣(LeetCode)

业务实现题,要逻辑处理对,错了跟多次,被罚了很多时间

 

代码通过目前效果

 贴代码

class Solution {
    public List<String> findHighAccessEmployees(List<List<String>> access_times) {
  Map<String, List<String>> map = new HashMap<>();
        for (int i = 0; i < access_times.size(); i++) {
            String name = access_times.get(i).get(0);
            String time = access_times.get(i).get(1);
            map.putIfAbsent(name, new ArrayList<>());
            map.get(name).add(time);
        }
        List<String> ans = new ArrayList<>();
        for (Map.Entry<String, List<String>> entry : map.entrySet()) {
            if (entry.getValue().size() <= 2) continue;
            List<String> times = entry.getValue();
            Collections.sort(times);
            int cnt = 0;
            for (int i = 0; i < times.size() - 2; i++) {
                int hour = Integer.parseInt(times.get(i).substring(0, 2));
                int minute = Integer.parseInt(times.get(i).substring(2, 4));
                // System.out.println("hourse:"+hour);
                // System.out.println("minute:"+minute);
                cnt=0;
                for (int j = i + 1; j < times.size(); j++) {
                    int newhour = Integer.parseInt(times.get(j).substring(0, 2));
                    int newminute = Integer.parseInt(times.get(j).substring(2, 4));
                    // System.out.println("newhour:"+newhour);
                    // System.out.println("newminute:"+newminute);
                    if (newhour == hour || (newhour - hour == 1 && newminute < minute)) {
                        cnt++;
                        // System.out.println("cnt:"+cnt);
                        if (cnt >= 2) {
                            break;
                        }
                    } else {
                        break;
                    }
                }

                if (cnt >= 2&& ans.indexOf(entry.getKey())==-1) {
                    ans.add(entry.getKey());
                    break;
                }
            }

        }
        return ans;
    }
}

解释步骤,首先,我先以名字作为键值,时间作为value值,这样子就可以通过遍历value值进行判断了,我先对时间进行排序。即一个人的时间,从小到大排序。然后遍历这个时间,因为要求在同一个小时里面要超过三次以上,所以我只要判断2次即可,为什么是俩次了,因为你的第一次就是在这个基础成立的情况下做的。如果有不符合条件的,直接跳出循环,重新假设下一个开始时间。如果cnt>=2&&我list里面不存在有这个人,我就可以放入。依次类推

第三题

2934. 最大化数组末位元素的最少操作次数 - 力扣(LeetCode)

 代码交的太着急了,心态有点崩,实在不应该编译出错。虽然是第三题,但是比第二题更简单。

提交性能

 代码

class Solution {
    public int minOperations(int[] nums1, int[] nums2) {
   int[] copy1 = Arrays.copyOf(nums1, nums1.length);
        int []copy2=Arrays.copyOf(nums2, nums2.length);
       int n=0;
        boolean flag=false;
       int ans =Integer.MAX_VALUE;
       int n1=nums1.length;
       int n2=nums2.length;
       int last1=nums1[n1-1];
       int last2=nums2[n2-1];
        int max1 = Arrays.stream(nums1).max().getAsInt();
        int max2 = Arrays.stream(nums2).max().getAsInt();
        if(last1==max1&&last2==max2)return 0;
       for(int i=0;i<n1;i++){
           if(nums1[i]<=last1&&nums2[i]<=last2)continue;
           int t=nums1[i];
           nums1[i]=nums2[i];
           nums2[i]=t;
           if(nums1[i]<=last1&&nums2[i]<=last2){
               n++;
               continue;
           };
           flag=true;
           break;
       }
       if(n!=0&&!flag){
           ans=n;
       }

       flag=false;
       n=0;
        copy1[n1-1]=last2;
        copy2[n2-1]=last1;
         last1=copy1[n1-1];
         last2=copy2[n2-1];
         max1 = Arrays.stream(copy1).max().getAsInt();
         max2 = Arrays.stream(copy2).max().getAsInt();
        if(last1==max1&&last2==max2)return 1;
        n=1;


        for(int i=0;i<n1;i++){
            if(copy1[i]<=last1&&copy2[i]<=last2)continue;
            int t=copy1[i];
            copy1[i]=copy2[i];
            copy2[i]=t;
            if(copy1[i]<=last1&&copy2[i]<=last2){
                n++;
                continue;
            };
            flag=true;
            break;
        }
        if(n!=1&&!flag)
            ans=Math.min(ans,n);
//        System.out.println(ans);
       if(ans==Integer.MAX_VALUE)return -1;
       return ans;
    }
}

首先我们要理解一个事情,这个n最大大概不超过n-1(可能实际上更小)。我们先假设,我们不进行交换最后一个尾数的情况下,将其他进行交换,保证尾数最大即可。然后再交换尾数的情况下,再交换其他的数。保证尾数最小。如果我存在无论无何我怎么交换这个数,我无法保证尾数最大,那么则无解,否则比最小就好了。实际情况可以看代码

第四题

做梦都没有想到这个是一个原题

考察的是字典树,但是茶神,直接转成哈希理解了。

贴一下茶神的题解,然后补充我的理解

 茶神题解,你值得拥有

 贴代码

class Solution {
    public int maximumStrongPairXor(int[] nums) {
  Arrays.sort(nums);
        //    java的整型长度为32位。那么这个方法返回的就是28
        int highBit=31-Integer.numberOfLeadingZeros(nums[nums.length-1]);
        int ans =0,mask=0;
        Map<Integer,Integer>mp=new HashMap<>();
        for(int i=highBit;i>=0;i--){
            mp.clear();
            mask=mask|(1<<i);
            int newAns=ans | (1<<i);
            for(int y:nums){
                int maskY=y&mask;//低于i的比特位置为0
                if(mp.containsKey(newAns ^ maskY)){
                    int x=mp.get(newAns^maskY);
                    
                    if(Math.abs(x-y)<=Math.min(x,y))
                    {
                        ans=newAns;
                        break;
                    }
                }
                mp.put(maskY,y);
            }
        }
        return ans;
    }
}

这个和三数之和一样,前面做的结果,会被我用来计算了。先了解一下异或的特性

1^2=3   3^2=1  3^1=2

她们有可以互相转换的,如果我哈希表里面有存在 value ^ newY =newAns,那么就存在这个值,然后从高位推到最后位,接着就是要符合

if(Math.abs(x-y)<=Math.min(x,y))的条件

总结

这次比赛打的很烂,掉了30分,这次双周赛白打了,我什么时候才可以拿k牌啊!!!。

比赛前面错了很多法,导致心态不好,第二题,我在第二次错,就发现问题了,结果越debug,越有问题,也是心态不好,第四题我是完全没有看(不过看了我也不会做就是了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/142354.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 日志记录器logging 百科全书 之 日志回滚

Python 日志记录器logging 百科全书 之 日志回滚 前言 在之前的文章中&#xff0c;我们学习了关于Python日志记录的基础配置。 本文将深入探讨Python中的日志回滚机制&#xff0c;这是一种高效管理日志文件的方法&#xff0c;特别适用于长时间运行或高流量的应用。 知识点&…

深入了解springmvc响应数据

目录 一、前后端分离开发与混合开发 1.1 混合开发模式 1.2 前后端分离模式【重点】 二、页面跳转控制 2.1 通过JSP实现页面跳转 2.2 转发与重定向 三、返回JSON数据 3.1 导包与配置 3.2 使用ResponseBody 四、返回静态资源 4.1 为什么无法直接查询静态资源 4.2 配置…

45 深度学习(九):transformer

文章目录 transformer原理代码的基础准备位置编码Encoder blockmulti-head attentionFeed Forward自定义encoder block Deconder blockEncoderDecodertransformer自定义loss 和 学习率mask生成函数训练翻译 transformer 这边讲一下这几年如日中天的新的seq2seq模式的transform…

简洁高效的微信小程序分页器封装实践

前言 在现今的移动应用开发中&#xff0c;微信小程序已经成为了一个备受欢迎的平台。然而&#xff0c;随着应用的复杂性增加&#xff0c;数据的管理和加载成为了一个问题。本文将探讨微信小程序中的一个关键概念&#xff1a;封装分页器&#xff0c;它是提升小程序性能和用户体验…

Windows如何正确设置PHP环境变量以在Git Bash中运行命令

1、随便找一个目录&#xff0c;鼠标右键打开git bash here 2、cd的根目录 3、找到php安装目录 4、 在根目录下打开 vim .bash_profile &#xff0c;添加环境变量&#xff0c;php地址根据自己的本地地址而定 PATH$PATH:/d/phpstudy_pro/Extensions/php/php7.3.4nts 添加后保存…

计算机网络期末复习-Part5

1、CRC计算 看例题&#xff1a;待发送序列为101110&#xff0c;生成多项式为X31&#xff0c;计算CRC校验码 先在待发送序列末尾添加与生成多项式次数相同的零&#xff0c;在上述例子中&#xff0c;生成多项式是X^3 1&#xff0c;所以需要添加3个零&#xff0c;待发送序列变成…

使用JAVA pdf转word

使用spire.pdf 非常简单。 查看 https://mvnrepository.com/artifact/e-iceblue/spire.pdf 注意&#xff0c;这个包在 e-iceblue 下。 下面开始撸代码 先来pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://mav…

设置VS编译选项使程序不需要带DLL在任意Windows系统上正常运行

针对VS上编译控制台程序和DLL程序的编译设置 之所以把控制台和DLL程序的编译设置放在一起&#xff0c;是因为它们的设置都已一样的。现在&#xff0c;我们以VS2013开发环境为例&#xff0c;想大家描述一下操作步骤。 在打开项目工程之后&#xff0c;右击项目工程&#xff0c;选…

数据运营基础:用户场景营销

一、概述 场景营销模型是顶层模型&#xff0c;是站在用户经营和用户场景角度来制定经营策略的模型。本质上&#xff0c;场景营销模型是在用户使用产品的每个细分场景中通过分析用户需求整合功能、实体和体验等为用户提供服务的模型。 二、场景的起源和特点 数据运营体系在发展…

页面的动静分离

动静分离&#xff1a; 访问静态和动态页面分开 实现动态和静态页面负载均衡 实验1&#xff1a; 准备三台虚拟机&#xff1a; 1台nginx代理服务器&#xff1a; 192.168.120.30 2台tomcat&#xff1a; tomcat1&#xff1a;192.168.120.20 tomcat2&#xff1a;192.168.12…

【C++】日期类实现,与日期计算相关OJ题

文章目录 日期类的设计日期计算相关OJ题HJ73 计算日期到天数转换KY111 日期差值KY222 打印日期KY258 日期累加 在软件开发中&#xff0c;处理日期是一项常见的任务。为了方便地操作日期&#xff0c;我们可以使用C编程语言来创建一个简单的日期类。在本文中&#xff0c;我们将介…

027 - STM32学习笔记 - ADC初识(一)

026- STM32学习笔记 - ADC初识&#xff08;一&#xff09; 前几天不小心把板子掉地上了&#xff0c;液晶屏摔坏了&#xff0c;暂时先停一下液晶屏的学习&#xff0c;等新的板子来了再继续学习。 一、ADC介绍 ADC指的是Analog to Digital Converter&#xff08;模数转换器&…

​2005/2008-2022逐年道路网分布数据

道路网&#xff08;road network&#xff09;指的是在一定区域内&#xff0c;由各种道路组成的相互联络、交织成网状分布的道路系统。全部由各级公路组成的称公路网。在城市范围内由各种道路组成的称城市道路网。 城市道路网由城镇管辖范围内的各种不同功能的干道和区域…

vmware 修改主机名称 hadoop 服务器环境配置(一)

如何在虚拟机配置主机名称&#xff1a; 1. 如图所示在/etc 文件夹下有个hosts文件。追加映射关系&#xff1a; #关系 ip地址 名称 192.168.164.20 hadoop20 2. 保存后&#xff0c;重启reboot即可

GoldWave 6.78中文免费激活版功能特色2024最新功能解析

GoldWave 6.78中文免费激活版是一款多功能、强大且用户友好的音频编辑工具。它为音乐制作人、播客主持人以及音频编辑爱好者提供了全面的编辑功能&#xff0c;让你能够创造出高质量的音频作品。无论你是在音乐制作、音频修复还是播客制作&#xff0c;GoldWave 都是一个值得一试…

第1关:构造函数与析构函数的实现

题目&#xff1a;根据.h写出.cpp 考点&#xff1a; 1.链表的默认构造&#xff0c; 拷贝构造&#xff0c;传参构造以及析构函数等。 代码&#xff1a; /********** BEGIN **********/ #include <cstdlib> #include <cstring> #include "LinkedList.h&…

卷积神经网络(1)

目录 卷积 1 自定义二维卷积算子 2 自定义带步长和零填充的二维卷积算子 3 实现图像边缘检测 4 自定义卷积层算子和汇聚层算子 4.1 卷积算子 4.2 汇聚层算子 5 学习torch.nn.Conv2d()、torch.nn.MaxPool2d()&#xff1b;torch.nn.avg_pool2d()&#xff0c;简要介绍使用方…

服务器常见问题排查(一)—cpu占用高、上下文频繁切换、频繁GC

一般而言cpu异常往往还是比较好定位的。原因包括业务逻辑问题(死循环)、频繁gc以及上下文切换过多。而最常见的往往是业务逻辑(或者框架逻辑)导致的&#xff0c;可以使用jstack来分析对应的堆栈情况。 使用jstack排查占用率问题 当使用jstack排查占用率问题时&#xff0c;可以…

如何下载全国水系、铁路、土地、交通设施和运输相关数据?

​ 通过以下方法可以将全国水系、铁路、土地、交通设施和运输相关数据下载到本机。 方法/步骤 下载GIS地图下载器 http://www.geosaas.com/download/mapdownloader.exe&#xff0c;安装完成后桌面上出现”GIS地图下载器“图标。 2、双击桌面图标打开”GI…

11-13 spring整合web

spring注解 把properties文件中的key注入到属性当中去 xml配置文件拆分 -> import标签 注解开发中 import 实现 搞一个主配置类&#xff0c;其他配置类全部导入进来这个这个主配置类 而且其他配置类不需要 加上configuration注解 之前这个注解用于表示这是一个配置文件 …