[LeetCode]645. 错误的集合(java实现)
1. 题目
2. 读题(需要重点注意的东西)
思路:
- 确认重复的数
- 确认丢失的数(重复的数有可能不是放在一起的)
目前能想到的确认重复的数有两种方法:
- hashmap
- new一个新数组存放出现的次数
此处使用数组更简单:用数组存放好出现的次数后,会有一个值为2,一个值为0,为2的是重复数,为0的是丢失数
3. 解法
---------------------------------------------------解法1(归并法)---------------------------------------------------:
class Solution {
// 1. 确认重复的数 2. 确认丢失的数(重复的数有可能不是放在一起的)
// 目前能想到的确认重复的数有两种方法:1. hashmap 2.new一个新数组存放出现的次数
// 使用数组:存放好出现的次数后,会有一个值为2,一个值为0,为2的是重复数,为0的是丢失数
public int[] findErrorNums(int[] nums) {
int[] result = new int[2];
int[] temp = new int[nums.length+1]; // 因为数组从0开始,但是要求从1开始,因此数组长度+1
for(int num : nums){
temp[num]++;
}
for(int i = 1 ; i < temp.length; i++){
if(temp[i] == 1) continue; // continue 跳过循环体剩余语句直接进入下个循环
if(temp[i] == 2) result[0] = i;
else result[1] = i;
}
return result;
}
}
4. 可能有帮助的前置习题
5. 所用到的数据结构与算法思想
6. 总结
continue语句只用在循环体中,其含义为跳过循环体剩余语句直接进入下个循环。