题目要求:

分析:
将元素以其为下标获取数组中的值,如果对应元素大于0,则取反,这样没有出现过的元素为下标的元素依然为正。
具体代码如下:
public class Solution {
public List<Integer> findDisappearedNumbers(int[] nums) {
List<Integer> result = new ArrayList<>();
if(nums == null || nums.length == 0){
return result;
}
for(int i = 0; i < nums.length; i++) {
int index = Math.abs(nums[i])-1;
if(nums[index] > 0){
nums[index] = -nums[index];
}
}
for(int i = 0; i<nums.length; i++) {
if(nums[i] > 0){
result.add(i+1);
}
}
return result;
}
}
本文介绍了一种高效查找数组中消失的数字的方法。通过遍历数组并利用数组元素作为索引,将对应位置的元素标记为负数,最后再次遍历数组,找出仍为正数的元素,其索引加一即为消失的数字。
1万+

被折叠的 条评论
为什么被折叠?



