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

news2024/9/21 4:23:28

比赛结果

 第一题

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,越有问题,也是心态不好,第四题我是完全没有看(不过看了我也不会做就是了

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Minecraft开服教程:使用MCSM面板一键搭建我的世界服务器并实现远程联机

文章目录 前言1.Mcsmanager安装2.创建Minecraft服务器3.本地测试联机4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射内网端口 5.远程联机测试6. 配置固定远程联机端口地址6.1 保留一个固定TCP地址6.2 配置固定TCP地址 7. 使用固定公网地址远程联机 前言 MCSManager是一个…

微信开发者工具如何使用

首先是下载微信开发者工具 链接: https://pan.baidu.com/s/1ri-fRCUQsz9vLxbTqtdPUQ 提取码: 8rhn 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 安装完打开就是以下界面 接下来进入正题 第一步新建或导入 新建 获取AppID 第一步&#xff1a;通过微信公众平…

STM32GPIO——上拉、下拉电阻

如上两个图所示&#xff0c;标号2都为上拉、下拉电阻部分&#xff0c;阻值约为30k~50k欧&#xff0c;通过对应开关进行控制&#xff0c;开关由寄存器控制。 当引脚外部的器件没有干扰引脚的电压时&#xff0c;即没有外部的上、下拉电压&#xff0c;引脚的电平由引脚内部上、下…

Qt 线程串口

文章目录 ui设置创建线程函数初始串口run函数接收发送数据读取数据处理读取的数据写入数据写入启动的命令 主线程 ui设置 创建线程函数 #include <QObject> #include <QThread> #include <QSerialPort> #include <QSerialPortInfo>class SerialPort :…

电容隔离型±10V输入度隔离放大器:ISOC 124P

度模拟电压信号隔离器。50KHz (-3dB)高带宽与ISO 124P隔离器Pin-Pin兼容。ISOC 124P模拟电压信号隔离放大器是一种采用电容耦合隔离的混合集成电路&#xff0c;该放大器采用了全新的调制-解调电容耦合隔离技术。模块中信号以数字的形式通过电容隔离层进行传输&#xff0c;通过数…

【python自动化】Playwright基础教程(八)鼠标操作

【python自动化】Playwright基础教程(八)鼠标操作 本文目录 文章目录 【python自动化】Playwright基础教程(八)鼠标操作playwright系列回顾前文代码click模拟鼠标点击dblclick模拟鼠标双击down模拟鼠标按下move模拟鼠标移动up模拟鼠标释放wheel模拟鼠标滚动鼠标长按常用实战引…

Day02_《MySQL索引与性能优化》

文章目录 一、SQL执行顺序二、索引简介1、关于索引2、索引的类型Btree 索引Btree 索引 三、Explain简介四、Explain 详解1、id2、select_type3、table4、type5、possible_keys6、key7、key_len8、ref9、rows10、Extra11、小案例 五、索引优化1、单表索引优化2、两表索引优化3、…

react使用wx-open-launch-weapp的方法

index.html中加载 <script src"https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> ios浏览器中,建议直接在app.js中触发 wx.config,其中openTagList写上wx-open-launch-weapp 因为微信需要根据网址计算签名,iosreact中会以根目录为有效网址 …

淘宝开放平台订单接口免申请审核接入规则

大家都知道&#xff0c;想要实现自动化批量获取淘宝的商品订单数据&#xff0c;离不开淘宝开放平台API接口。想要获取API调用权限&#xff0c;需要经过淘宝开放平台的严苛审核流程。并且&#xff0c;现在平台基本不开放新的应用权限了。像很多做ERP的公司&#xff0c;他们的客户…

用Java开发一个扫雷游戏

以下是用Java开发一个扫雷游戏的基本步骤&#xff1a; 创建一个窗口和画布&#xff0c;用来显示游戏界面。 创建一个游戏逻辑类&#xff0c;包含一些基本的操作&#xff0c;如生成地雷、计算周围地雷数量、打开方格等。 在画布上绘制游戏界面&#xff0c;包括格子、数字、地雷…

华为ensp:边缘端口并启动BUDU保护

如上图前提是三个交换机都做了rstp&#xff0c;则在边缘的地方做 边缘端口并启动BUDU保护&#xff0c;也就是我用绿色圈出来的地方 边缘1 进入交换机的系统视图 interface e0/0/3 进入接口 stp edged-port enable quit 再退回系统视图 stp bpdu-protection 这样就可以了…

前端工具nvm实现node自由

node的自由之路 前言 大家使用vue框架开发的朋友可能会遇到首次运行公司项目环境的时候&#xff0c;会出现使用npm install命令安装依赖包的时候出现各种各样的问题&#xff0c;其中很重要的一个错误原因就是因为你的nodejs版本和当时搭建环境的版本不一致造成的。今天就来给…

C语言精华题目锦集1

第一题 test.c文件中包括如下语句&#xff0c;文件中定义的四个变量中&#xff0c;是指针类型的是&#xff08;&#xff09;【多选】 #define INT_PTR int* typedef int* intptr; INT_PRT a,b; int_ptr c,d;A:a  B:b  C:c  D:d #define是宏定义&#xff0c;此时在程序中IN…

软考网络工程师知识点总结(四)

目录 61、FTP文件传输服务 62、DHCP动态主机配置协议 63、电子邮件服务 64、各种新技术相关概念及功能的考查 65、Windows的ipconfig命令 66、Windows的其它命令及说明 67、Linux系统关机和重启命令 68、Linux系统文件属性命令 69、SNMP协议版本 70、SNMP协议的报文类…

移远EC600U-CN开发板 day04

控件探索-滑杆&#xff08;lv.slider&#xff09; 1. 显示一个简单的滑杆 def slider_event_cb(evt): slider evt.get_target()# 修改label的值label.set_text(str(slider.get_value()))slider lv.slider(scr) #创建滑杆组件 slider.set_width(200) #设置滑杆宽…

OpenCV 实现透视变换

一&#xff1a;OpenCV透视变换的概念 仿射变换(affine transform)与透视变换(perspective transform)在图像还原、图像局部变化处理方面有重要意义。通常&#xff0c;在2D平面中&#xff0c;仿射变换的应用较多&#xff0c;而在3D平面中&#xff0c;透视变换又有了自己的一席之…

华视电子驱动安装

1、安装驱动 下载地址&#xff1a;http://ws.it0355.com/a/202101/07/a27013.htm 双击exe文件安装驱动&#xff1a; 检查驱动运行正常&#xff1a; http://www.winwin7.com/soft/xtbd-12727.html vc库安装

https:/myproject.git did not send all necessary objects

事情是由于在git push 的时候&#xff0c;电脑突然蓝屏了&#xff0c;再打开电脑的时候&#xff0c;git pull git push都失效了&#xff0c; 粗暴的解决方式是重新在拉取代码&#xff0c;可以暂时解决&#xff0c;但是考虑到可能以后还会遇到这个问题&#xff0c;所以在不紧急…

取暖器/暖风机上架 亚马逊美国站UL1278测试标准要求

美国是一个对安全要求非常严格的国家&#xff0c;美国本土的所有电子产品生产企业早在很多年前就要求有相关检测。而随着亚马逊在全球商业的战略地位不断提高&#xff0c;境外的电子设备通过亚马逊不断涌入美国市场。“为保证消费者得安全&#xff0c;亚马逊始终强调带电得产品…

Perl爬虫程序的框架

Perl爬虫程序的框架&#xff0c;这个框架可以用来爬取任何网页的内容。 perl #!/usr/bin/perl use strict; use warnings; use LWP::UserAgent; use HTML::TreeBuilder; # 创建LWP::UserAgent对象 my $ua LWP::UserAgent->new; # 设置代理信息 $ua->proxy(http, ); …