2024.05.25 第 131 场双周赛

2024-05-26 20:20
文章标签 25 131 双周 2024.05

本文主要是介绍2024.05.25 第 131 场双周赛,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Leetcode 第 131 场双周赛

求出出现两次数字的 XOR 值

[Leetcode 求出出现两次数字的 XOR 值](https://leetcode.cn/problems/find-the-xor-of-numbers-which-appear-twice/description/]

给你一个数组 nums ,数组中的数字 要么 出现一次,要么 出现两次。
请你返回数组中所有出现两次数字的按位_ _XOR 值,如果没有数字出现过两次,返回 0 。

第 131 场双周赛_1.png

用 HashMap 存储出现两次的数字,然后对数字进行 XOR 计算,即 ‘^’。

完整代码

class Solution {public int duplicateNumbersXOR(int[] nums) {Map<Integer, Integer> map = new HashMap<Integer, Integer>();for (int num : nums) {map.put(num, map.getOrDefault(num, 0) + 1);}int res = 0;Iterator<Map.Entry<Integer, Integer>> iterator = map.entrySet().iterator();while (iterator.hasNext()) {Map.Entry<Integer, Integer> entry = iterator.next();if (entry.getValue() > 1) {res ^= entry.getKey();}}return res;}
}

查询数据中元素的出现位置

Leetcode 查询数组中元素的出现位置

给你一个整数数组 nums ,一个整数数组 queries 和一个整数 x 。
对于每个查询 queries[i] ,你需要找到 nums 中第 queries[i] 个 x 的位置,并返回它的下标。如果数组中 x 的出现次数少于 queries[i] ,该查询的答案为 -1 。
请你返回一个整数数组 answer ,包含所有查询的答案。

第 131 场双周赛_2.png

先找出数组中值为 x 的位置数组,再从数组中获得结果。

完整代码

class Solution {public int[] occurrencesOfElement(int[] nums, int[] queries, int x) {List<Integer> list = new ArrayList<Integer>();for (int i = 0; i < nums.length; i++) {if (nums[i] == x) {list.add(i);}}for (int i = 0; i < queries.length; i++) {if (queries[i] > list.size()) {queries[i] = -1;} else {queries[i] = list.get(queries[i] - 1);}}return queries;}
}

所有球里面不同颜色的数目

Leetcode 所有球里面不同颜色的数目

给你一个整数 limit 和一个大小为 n x 2 的二维数组 queries 。
总共有 limit + 1 个球,每个球的编号为 [0, limit] 中一个 互不相同 的数字。一开始,所有球都没有颜色。queries 中每次操作的格式为 [x, y] ,你需要将球 x 染上颜色 y 。每次操作之后,你需要求出所有球中 不同 颜色的数目。
请你返回一个长度为 n 的数组 result ,其中 result[i] 是第 i 次操作以后不同颜色的数目。
注意 ,没有染色的球不算作一种颜色。

第 131 场双周赛_3.png

需要求出每次操作之后颜色的种类数。
需要用到两个 Map,一个 Map 记录每个球的颜色编号;一个 Map 记录每个颜色的数目,每次操作后获取颜色 Map 的大小既是所求结果。

  1. 更新 Map 球的颜色,直接使用 map.put()进行更新
  2. 更新球颜色数目的 Map,
    如果在记录球颜色的 Map 中有这个球的记录,则需要将此 Map 中颜色的数量减一;并如果其减为零,需要从 Map 中移除。
    更新颜色的数目加一。

这里可以使用数组来记录球的颜色,这样可能有些球的颜色一直没有更新,就会出现浪费内存的情况,因此使用 Map 来存储球的颜色,使用的内存更小一点。

完整代码

class Solution {public int[] queryResults(int limit, int[][] queries) {Map<Integer, Integer> balls = new HashMap<Integer, Integer>();Map<Integer, Integer> map = new HashMap<Integer, Integer>();int[] res = new int[queries.length];for (int i = 0; i < queries.length; i++) {int ball = queries[i][0];int color = queries[i][1];if (balls.containsKey(ball)) {int val = balls.get(ball);if (map.get(val) == 1) {map.remove(val);} else {map.put(val, map.get(val) - 1);}}balls.put(ball, color);map.put(color, map.getOrDefault(color, 0) + 1);res[i] = map.size();}return res;}
}

物块放置查询

Leetcode 物块放置查询

有一条无限长的数轴,原点在 0 处,沿着 x 轴 方向无限延伸。
给你一个二维数组 queries ,它包含两种操作:

  1. 操作类型 1 :queries[i] = [1, x] 。在距离原点 x 处建一个障碍物。数据保证当操作执行的时候,位置 x 处 没有 任何障碍物。
  2. 操作类型 2 :queries[i] = [2, x, sz] 。判断在数轴范围 [0, x] 内是否可以放置一个长度为 sz 的物块,这个物块需要 完全 放置在范围 [0, x] 内。如果物块与任何障碍物有重合,那么这个物块 不能 被放置,但物块可以与障碍物刚好接触。注意,你只是进行查询,并 不是 真的放置这个物块。每个查询都是相互独立的。

请你返回一个 boolean 数组results ,如果第 i 个操作类型 2 的操作你可以放置物块,那么 results[i] 为 true ,否则为 false 。

第 131 场双周赛_4.png

对于操作类型 1,添加障碍物,将其放入一个数组中,存储障碍物的坐标,并保证坐标是递增的。
对于操作类型2,判断是否能放置物块,在障碍物数组中遍历到查询的位置,判断障碍物之间的间距是否大于等于物块的长度。

完整代码

class Solution {public List<Boolean> getResults(int[][] queries) {List<Integer> barries = new LinkedList<Integer>();List<Boolean> res = new ArrayList<Boolean>();for (int i = 0; i < queries.length; i++) {if (queries[i].length == 2) {// 加障碍int index = 0;while (index < barries.size() && queries[i][1] > barries.get(index)) {index++;}barries.add(index, queries[i][1]);} else {int tag = 0;// 判断是否可放入if (queries[i][2] > queries[i][1]) {res.add(false);continue;}int before = 0;for (Integer num : barries) {if (num > queries[i][1]) break;if ((num - before) >= queries[i][2]) {tag = 1;break;}before = num;}if ((queries[i][1] - before) >= queries[i][2]) tag = 1;if (tag == 1) res.add(true);else res.add(false);}}return res;}
}

以上解法超出时间限制(2D9F7D09.png

优化方案

  1. 插入障碍物的坐标时,目前使用从 0 开始遍历插入,可以使用更优查找算法查找插入位置,比如二分查找。
  2. 添加一个数组保存障碍物位置之前能放入的物块的最大宽度。然后同样使用查找算法查找搜索坐标的前一个障碍物保存的最大宽度,再加上自己与前一个障碍物之间的距离,一起进行判断。
  • 此优化方案加入待办,之后实现

这篇关于2024.05.25 第 131 场双周赛的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1005494

相关文章

【JavaScript】LeetCode:21-25

文章目录 21 最大子数组和22 合并区间23 轮转数组24 除自身以外数组的乘积25 缺失的第一个正数 21 最大子数组和 贪心 / 动态规划贪心:连续和(count)< 0时,放弃当前起点的连续和,将下一个数作为新起点,这里提供使用贪心算法解决本题的代码。动态规划:dp[i]:以nums[i]为结尾的最长连续子序列(子数组)和。 dp[i] = max(dp[i - 1]

2025年25届计算机毕业设计:如何实现高校实验室Java SpringBoot教学管理系统

✍✍计算机毕业编程指导师** ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、Python、微信小程序、大数据实战项目集 ⚡⚡文末获取源码 文章目录 ⚡⚡文末获取源码高校实验室教学管理系统-研究背景高校实验室教学管理系

智力题:25匹马5条跑道找最快的3匹马,最少需要跑几次?

要找出25匹马中最快的3匹马,使用5条跑道,最少需要跑几次?我们可以通过逐步推理来解决这个问题。 第一步:分组比赛 首先,我们将25匹马分成5组,每组5匹马。每组进行一次比赛,这样我们就有5次比赛的结果。 组1:A1, A2, A3, A4, A5 组2:B1, B2, B3, B4, B5 组3:C1, C2, C3, C4, C5 组4:D1, D2, D3, D4, D5 组

芬兰手游业25年发展史

自2010年Rovio凭借《愤怒的小鸟》成功以来,芬兰的优秀开发者可以说是不断的引领手游潮流,有Frogmid、Seriously这样的小型团队,也有Supercell这样的世界收入冠军。除却收入之外,我们可以发现芬兰开发商的手游绝大多数都是具有独特创意的。 为什么芬兰手游业可以具有如此之大的竞争优势?其他人想要赶上应该怎么做?这个答案从来都不是能够简单作答的,因为它根植于芬兰的行业发展史,所以

图形API学习工程(25):实现法线贴图

工程GIT地址:https://gitee.com/yaksue/yaksue-graphics 目标 在《图形API学习工程(10):基础光照》中,我实现了最基础的光照,同时也表现了法线的作用。 在《图形API学习工程(11):使用纹理》中,工程已经能够加载纹理贴图。 这样,法线贴图 所需的准备已经完成,可以在工程里实现这个技术了。 (关于法线贴图的意义,可见上一篇博客《从“法线贴图的意义

【简历】25届南京某一本JAVA简历:简历通过率还好,但是拿不到OFFER

注:为保证用户信息安全,姓名和学校等信息已经进行同层次变更,内容部分细节也进行了部分隐藏 简历说明 今天看一份25届南京某一本大学的Java简历。 这个简历呢,学校是一本。我们说上来先要定校招层次,这个层次就按照中厂来讲。因为现在很多的双非一本目标都是在中厂。 这个同学有个实习经历,一本有八成的同学主项目都是重复的。HR他只能看到项目重不重复,要点对不对他不知道,就从这个角度来看,这位同学

GNU的伪操作 (25)

这里主要是 对 GNU的 各个伪操作进行 详细的解释。 先来看着几个 伪操作。 .byte,  .short,  .long,  .quad , .float ,  这个是关于 字节的。 .string   .ascii 是关于字符串的。 这个字符串编译器是可以自动在末尾补0 的。 举例: val:         .word 0x11223344         m

25版王道数据结构课后习题详细分析 第八章 8.2 插入排序

一、单项选择题 ———————————————————— ———————————————————— 解析:直接插入排序在最坏的情况下要做n(n-1)/2次关键字的比较,当n=5时, 关键字的比较次数为10。注意不考虑与哨兵的比较。 正确答案: ———————————————————— ———————————————————— 解析:由于序列初始基本有序,因此使用直接插入排序

游卡,三七互娱,得物,顺丰,快手,oppo,康冠科技,途游游戏,埃科光电25秋招内推

游卡,三七互娱,得物,顺丰,快手,oppo,康冠科技,途游游戏,埃科光电25秋招内推 ①顺丰 【招聘岗位】研发、算法、大数据、产品、项管、设计、人资等 【官方内推码】4FOLXH 【一键内推】https://sourl.cn/UzbDat ②游卡 【岗位】程序技术、产品策划、美术、发型运营、职能综合、桌游业务等大类 【一键内推】https://sourl.cn/PHiZZE 【内推码】DSymt

(175)时序收敛--->(25)时序收敛二五

1 目录 (a)FPGA简介 (b)Verilog简介 (c)时钟简介 (d)时序收敛二五 (e)结束 1 FPGA简介 (a)FPGA(Field Programmable Gate Array)是在PAL (可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了