Leetcode - 周赛395

目录

一,3131. 找出与数组相加的整数 I

二,3132. 找出与数组相加的整数 II

三,3133. 数组最后一个元素的最小值

四,3134. 找出唯一性数组的中位数


一,3131. 找出与数组相加的整数 I

本题本质就是求两个数组最小值的差。 

代码如下:

class Solution {public int addedInteger(int[] nums1, int[] nums2) {Arrays.sort(nums1);Arrays.sort(nums2);return nums2[0]-nums1[0];}
}

二,3132. 找出与数组相加的整数 II

本题要先将数组排序,然后暴力枚举移除的两个数,然后判断两个数组对应下标的差值是否相同,如果全部相同,就直接返回差值。题目中还要求差值必须时最小的,这点不用担心,因为上述的枚举实际上就是按照差值从小到大的顺序,所以第一个满足条件的一定是最小的

代码如下:

class Solution {public int minimumAddedInteger(int[] nums1, int[] nums2) {Arrays.sort(nums1);Arrays.sort(nums2);for(int i=0; i<nums1.length; i++){for(int j=i+1; j<nums1.length; j++){int ans = Integer.MAX_VALUE;int idx = 0;for(int k=0; k<nums1.length; k++){if(k!=i && k!=j){if(ans==Integer.MAX_VALUE || ans==nums2[idx]-nums1[k]){ans = nums2[idx]-nums1[k];idx++;}else{break;}}}if(idx == nums2.length) return ans;}}return -1;}
}

除了上述做法,还有一种更简单的做法,题目中说了只删除两个数,也就是说排完序后,其实差值只有这三种情况:

  • nums2[0] - nums1[0]
  • nums2[0] - nums1[1]
  • nums2[0] - nums1[2]

然后依次判断这三中情况是否符合条件,如果符合就返回答案,题目还要求差值必须是最小的,所以要反过来遍历。

代码如下:

class Solution {public int minimumAddedInteger(int[] nums1, int[] nums2) {Arrays.sort(nums1);Arrays.sort(nums2);for(int i=2; i>=0; i--){int ans = nums2[0] - nums1[i];int idx = 0;for(int j=i; j<nums1.length; j++){if(ans == nums2[idx]-nums1[j]){idx++;if(idx == nums2.length) return ans;}}}return -1;}
}

三,3133. 数组最后一个元素的最小值

本题是一道二进制运算题,由&的性质可知:

  • &的数越多,&的值就越小
  • &的值一定小于等于所有参与&运算的数中的最小值

所以nums中第一个元素一定是x,那剩下的数该如何确定呢?我们知道1&0=0,要想使得nums数组的&值不变,只能改变x二进制位为0的部分(因为0&0=0,0&1=0,不会对&值产生影响),所以就可以去除x二进制位为1的部分,问题就变成了,将剩下的0如何变化,可以得到第n-1小的数,这不就是 001,010,011,100.....也就是说,我们只要将n-1的二进制位全部插入到x二进制位为0的位置就得到了答案。

class Solution {public long minEnd(int n, int x) {n -= 1;long ans = x;int i = 0, j = 0;while(n>>i > 0){if((ans>>j&1)==0){//判断x的第j位二进制位是否为0ans |= (long)(n>>i&1)<<j;i++;}j++;}return ans;}
}

 优化做法:

class Solution {public long minEnd(int n, int x) {n -= 1;long ans = x;int j = 0;long t = ~x;while(n>>j > 0){long lb = t&-t;//得到最低位的1ans |= (long)(n>>j&1)*lb;j++;t ^= lb;}return ans;}
}

四,3134. 找出唯一性数组的中位数

二分答案 + 滑窗

题目问中位数,而中位数就是第n/2小的数,所以可以直接想到二分,二分需要有单调性,而

题目中说由distinct(nums[i...j)组成的distinct数组是递增数组,所以它具有单调性,就可以使用二分。接下来要解决的就是check方法如何实现。

我们知道满足check方法的条件就是在dis数组中<=mid的数的数量要>=((n+1)*n/2+1)/2,那么如何计算distinct数组中<=mid的数的数量呢,答案是滑窗:使用map不断的统计每个数出现的次数,如果map.size() > mid,就需要收缩窗口,cnt += r-l+1,不断的重复上述过程。

代码如下: 

class Solution {public int medianOfUniquenessArray(int[] nums) {Set<Integer> set = new HashSet<>();for(int x : nums) set.add(x);int l = 1, r = set.size();while(l <= r){int mid = (l + r) / 2;if(check(mid, nums)){r = mid - 1;}else{l = mid + 1;}}return r + 1;}boolean check(int k, int[] nums){Map<Integer, Integer> map = new HashMap<>();long cnt = 0;int n = nums.length;for(int l=0,r=0; r<n; r++){map.merge(nums[r], 1, Integer::sum);while(map.size() > k){if(map.merge(nums[l], -1, Integer::sum)==0)map.remove(nums[l]);l++;}cnt += r-l+1;}return cnt >= ((long)(n+1)*n/2+1)/2;}
}

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

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

相关文章

[iOS]组件化开发

一、组件化开发基础 1.组件定义 在软件开发中&#xff0c;一个组件是指一个独立的、可替换的软件单元&#xff0c;它封装了一组相关的功能。组件通过定义的接口与外界交互&#xff0c;并且这些接口隔离了组件内部的实现细节。在Swift语言中&#xff0c;组件可以是一个模块、一…

文献速递:肺癌早期诊断---低剂量胸部计算机断层扫描上的三维深度学习端到端肺癌筛查

Title 题目 End-to-end lung cancer screening with three-dimensional deep learning on low-dose chest computed tomography 低剂量胸部计算机断层扫描上的三维深度学习端到端肺癌筛查 01文献速递介绍 2018年估计有160,000例死亡病例&#xff0c;肺癌是美国最常见的癌症…

青少年软件编程(Scratch一级)等级考试试卷(2019年12月)

客观题 题目总数&#xff1a;35 总分数&#xff1a;70 时间&#xff1a;不限时 CSDN添加图片自带水印&#xff0c;可至文末获取无水印版word文档 第 1 题 单选题 下列关于舞台的描述&#xff0c;不正确的是&#xff1f;&#xff08; &#xff09; A.Scratch只能…

MVVM框架

LifeCycle 翻译为生命周期。意义就是为了监控某个事件的生命周期。 此处用了addObserver函数&#xff0c;代表添加监控者。监控该activity的变化。activity的状态有onCreate,onStop,onDestory等&#xff0c;该函数表示对所有状态进行监听。 该方法使用了标签的方法&#xff0c…

护航智慧交通安全 | 聚铭精彩亮相2024交通科技创新及信创产品推广交流会

4月26日&#xff0c;石家庄希尔顿酒店内&#xff0c;河北省智能交通协会盛大举办2024年度交通科技创新及信创产品推广交流会。聚铭网络受邀参与&#xff0c;携旗下安全产品及解决方案精彩亮相&#xff0c;为智慧交通安全保驾护航。 为深化高速公路创新驱动发展战略&#xff0…

vue3中的reactive、readonly和shallowReactive

在 Vue 3 中&#xff0c;reactive、readonly 和 shallowReactive 是用于创建响应式对象的函数&#xff0c;它们可以帮助管理组件状态和数据流。下面是它们的详细介绍以及相应的代码示例&#xff1a; reactive: reactive 函数用于创建一个完全响应式的对象&#xff0c;当对象的属…

2024 java easyexcel poi word模板填充数据,多个word合成一个word

先看效果 一、准备工作 1.word模版 2.文件路径 二、pom依赖 <!-- easyexcel --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.7</version></dependency><depe…

商城数据库88张表结构(九)

DDL 33.商品举报表 CREATE TABLE wang_informs (informid int(11) NOT NULL AUTO_INCREMENT COMMENT 自增ID,informTargetid int(11) NOT NULL COMMENT 举报人ID,goodid int(11) NOT NULL COMMENT 被举报商品ID,shopid int(11) NOT NULL COMMENT 被举报店铺ID,informType int(…

如何申请免费SSL证书,把网站升级成HTTPS

HTTPS&#xff08;Hyper Text Transfer Protocol Secure&#xff09;是一种用于安全数据传输的网络协议&#xff0c;它可以有效地保护网站和用户之间的通信安全。然而&#xff0c;要使一个网站从HTTP升级到HTTPS&#xff0c;就需要一个SSL证书。那么&#xff0c;如何申请免费的…

一文解读 SQL 生成工具

SQL 生成工具可用于测试 Parser 与其他数据库产品的兼容性&#xff0c;通过解析 YACC 语法文件中的产生式&#xff0c;生成对应的 SQL 语句&#xff0c;再使用数据库执行该 SQL&#xff0c;根据结果判断语句是否与其他数据库语法兼容。 01工具使用 语法文件预处理 预处理目的…

notion使用小tip(待补充)

可以替代思维导图是一个很棒的软件 公式编辑&#xff1a;latex 网站链接&#xff1a;LATEX语法 一些常用的用法&#xff1a; 下标&#xff1a;a_{Si} 分数&#xff1a;\frac{}{} 乘&#xff1a;\times 向量&#xff1a;\vec{} pai (3.14159…) : \pi 直接用公式编辑器&#…

MATLAB使用贝叶斯网络bnt工具箱:使用手册详解

MATLAB构建贝叶斯网络bnt工具箱: 贝叶斯网络(Bayesian networks)相关网页资源介绍1 工具包安装2 创建贝叶斯网络2.1 图结构(Graph structure)2.2 创建贝叶斯网络外壳(Creating the Bayes net shell)2.3 创建贝叶斯网络2.3 参数2.4 随机参数2 推断(Inference)2.1 边缘分…

【kettle005】kettle访问Oracle数据库并处理数据至execl文件(已更新)

1.一直以来想写下基于kettle的系列文章&#xff0c;作为较火的数据ETL工具&#xff0c;也是日常项目开发中常用的一款工具&#xff0c;最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下Oracle数据库相关知识体系 3.欢迎批评指正&#xff0c;跪谢一键三连&am…

全栈从0到1 3D旅游地图标记和轨迹生成

功能演示 演示视频 体验地址 Vercel App 开发技术栈&#xff1a; NextJs&#xff08;前端框架&#xff09;React&#xff08;前端框架&#xff09;TailwindCSS &#xff08;CSS样式&#xff09;echart echart gl &#xff08;地图生成&#xff09;shadui&#xff08;UI组件…

Nginx自定义状态码499出现原因

499状态码定义 维基百科的定义 499 Client Closed Request (Nginx) Used in Nginx logs to indicate when the connection has been closed by client while the server is still processing itsrequest, making server unable to send a status code back 499状态码是nginx自…

Vue2 和 Vue3 的区别 (性能,编码方式,API 特性,源码)

在这个快节奏的时代&#xff0c;技术更新换代的速度也越来越快。我一直在使用Vue 2来开发项目。然而&#xff0c;现在越来越多的公司转向了Vue 3&#xff0c;并将其作为主要的前端开发框架。这就需要我们及时跟进新技术的发展&#xff0c;以保持竞争力。因此&#xff0c;我决定…

C语言阶段性测试错题纠正与拓展

引言&#xff1a;在2024年4月26日&#xff0c;我进行了C语言知识的“期末考试”。通过这次考试&#xff0c;我发现了我的知识漏洞。所以&#xff0c;我写下这篇博客来记录我的错题&#xff0c;并进行纠正&#xff0c;然后对于以前遗忘知识的回顾。 更多有关C语言的知识详解可前…

HarmonyOS编程实践系列:第一节 - 创建健康App欢迎页

系列文章目录 &#xff08;零&#xff09;鸿蒙HarmonyOS入门&#xff1a;如何配置环境&#xff0c;输出“Hello World“ &#xff08;一&#xff09;鸿蒙HarmonyOS开发基础 &#xff08;二&#xff09;鸿蒙HarmonyOS主力开发语言ArkTS-基本语法 &#xff08;三&#xff09;鸿蒙…

梳理一下低代码的真正价值!另推荐超好用的5款低代码开发平台

一、先来聊聊低代码的真实价值&#xff01; 在回答这个问题之前&#xff0c;我们不妨先来看两个案例&#xff1a; 某连锁商超企业在发展中产生了新的业务需求&#xff0c;一是希望能够快速展示门店销售数据&#xff0c;满足高层的管理需求&#xff1b;二是希望巡店、上架商品…

字典及GitHub字典爬取工具

红队API接口Fuzz字典可以用于WEB安全&#xff0c;渗透测试&#xff0c;SRC等场景 完整文件已上传知识星球&#xff0c;需要的朋友可加入查看。