448. Find All Numbers Disappeared in an Array
Input:
[4,3,2,7,8,2,3,1]
Output:
[5,6]public class Solution {
public List<Integer> findDisappearedNumbers(int[] nums) {
List<Integer> res = new ArrayList<Integer>();
for (int i = 0; i < nums.length; i++) {
int val = Math.abs(nums[i]) - 1; //遇到一个数字时,把它的绝对值转换成index
if (nums[val] > 0) nums[val] = -nums[val]; //如果这个index上的数字是正数,把这个数换成负数
}
//在这一步结束之后,所有只出现一次的index上的数字是负数
//index上是正数的数字说明没有正负颠倒过,也就是这个数是disappear的
for (int i = 0; i < nums.length; i++) {
if (nums[i] > 0) res.add(i + 1);
}
return res;
}
}Last updated