Leetcode - 448 Find All Numbers Disappeared in an Array (Easy)
题目描述:数组中元素的范围为 [1, n],有一些重复的元素和一些丢失元素,寻找所有丢失的元素。
Input:
[4,3,2,7,8,2,3,1]
Output:
[5,6]
public List
<Integer> findDisappearedNumbers(int[] nums
) {
List
<Integer> res
= new ArrayList<>();
for (int i
= 0; i
< nums
.length
; i
++) {
while (nums
[i
] != i
+ 1 && nums
[nums
[i
] - 1] != nums
[i
]) {
swap(nums
, i
, nums
[i
] - 1);
}
}
for (int i
= 0; i
< nums
.length
; i
++) {
if (nums
[i
] != i
+ 1) {
res
.add(i
+ 1);
}
}
return res
;
}
public void swap(int[] nums
, int i
, int j
) {
int t
= nums
[i
];
nums
[i
] = nums
[j
];
nums
[j
] = t
;
}