448. Find All Numbers Disappeared in an Array

原題

  • 題目描述:一個數組存放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;

    }
}
發佈了80 篇原創文章 · 獲贊 35 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章