Re: [闲聊] 每日LeetCode

楼主: Rushia (みけねこ的鼻屎)   2022-10-23 15:26:12
645. Set Mismatch
给予一个阵列表示一个不重复数字的集合,集合的元素范围为 1~n,但是这边出现了
错误导致集合内存在两个重复数字,找出集合的重复数字和缺少的数字。
Example:
Input: nums = [1,2,2,4]
Output: [2,3]
思路:
1.用一个阵列纪录每个元素的出现次数。
2.遍历 1~n 检查数字,分三个case:
0:缺失的数字
1:正常的数字
2:多一个的数字
目标是找0和2的数字是哪个。
3.当res的两个数字都不为0的时候,表示两个数字都找到了,提早跳出循环。
JavaCode:
class Solution {
public int[] findErrorNums(int[] nums) {
int[] res = new int[2];
int[] count = new int[nums.length + 1];
for (int num : nums)
count[num]++;
for(int i = 1; i < count.length; i++){
if(count[i] != 1){
if(count[i] == 2)
res[0] = i;
else
res[1] = i;
if(res[0] != 0 && res[1] != 0) break;
}
}
return res;
}
}
https://i.imgur.com/ZCY3Agm.gif
作者: pandix (面包屌)   2022-10-23 15:39:00
大师
作者: NTHUlagka (拉卡)   2022-10-23 16:05:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com