问题描述:给你一个数组,数组中的数字为1~数组长度。有的数字出现一次,有的数字出现两次。找出没有出现的数字。
思路:遍历同事用另一个数组记录。再遍历这个记录数组得出答案。
原代码:
public List<Integer> findDisappearedNumbers(int[] nums) {
int length=nums.length;
int[] record=new int[length+1];
for(int i=0;i<length;i++){
record[nums[i]]++;
}
List<Integer> list=new ArrayList<Integer>();
for(int j=1;j<length+1;j++){
if(record[j]==0)
list.add(j);
}
return list;
}
最佳答案:
public List<Integer> findDisappearedNumbers(int[] nums) {
boolean [] array = new boolean [nums.length+1];
for(int i = 0 ; i < nums.length ; i++){
array[nums[i]] = true;
}
ArrayList<Integer> sol = new ArrayList<Integer>();
for(int i = 1 ; i < array.length ; i++){
if(array[i] == false) sol.add(i);
}
return sol;
}
用Boolean型数组可以简化判断