- 題目描述:一個數組存放1~n之間的數值(n爲數組長度),求你找出1~n中未出現在數組中的值,不使用額外空間,複雜度爲O(n)
- 思路:遍歷數組,把數組的值看成下標,使對應位置的值+n,此工作爲標記.然後再一次遍歷數組,輸出數組值<=n的位置的下標,加入到結果集中
class Solution {
public List<Integer> findDisappearedNumbers(int[] nums) {
List<Integer> res=new ArrayList<>();
int n=nums.length;
for(int i=0;i<n;i++){
nums[(nums[i]-1)%n]+=n;
}
for(int i=0;i<n;i++){
if(nums[i]<=n){
res.add(i+1);
}
}
return res;
}
}