思路一: 用数组记录
public List<Integer> findDisappearedNumbers(int[] nums) {
int[] m = new int[nums.length];
for (int num : nums) {
if (num-1 <= m.length) {
m[num-1] = 1;
}
}
List<Integer> result = new ArrayList<>();
for (int i = 0; i < m.length; i++) {
if (m[i] == 0) {
result.add(i+1);
}
}
return result;
}
思路二: 这种思路比较巧妙,每个值+n,这样原来的数值必定大于 n
public List<Integer> findDisappearedNumbers(int[] nums) {
List<Integer> ans = new ArrayList<>();
int len = nums.length;
for (int num : nums) {
int index = (num - 1) % len;
nums[index] += len;
}
for (int i = 0; i < len; i++) {
if (nums[i] <= len) {
ans.add(i + 1);
}
}
return ans;
}
标签:448,nums,int,len,num,result,easy,new,leetcode
From: https://www.cnblogs.com/iyiluo/p/16804880.html