小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

查找數(shù)組中未出現(xiàn)的數(shù)

 Dragon_chen 2017-04-30
給定一個數(shù)組,數(shù)組中的元素的范圍恰好是1到數(shù)組的大小,有些元素重復(fù)出現(xiàn)兩次,有些元素只出現(xiàn)一次,求1到n范圍里面沒有出現(xiàn)在數(shù)組中的數(shù)的集合。限定O(n)不能使用額外空間。
思考:限定O(n),思考使用計數(shù)排序,但是不能使用額外空間,所以利用題目所給的條件范圍恰好是1到數(shù)組的大小,這和計數(shù)排序是差不多的思想,出現(xiàn)的數(shù)-1==的數(shù)組的下標。而不會越界。所以遍歷到的數(shù)就可以直接將數(shù)組對應(yīng)下標元素標記為已出現(xiàn),如第一個數(shù)3就標記s[2],怎么標記為已出現(xiàn),而不影響到數(shù)組后面的遍歷?取負數(shù),遍歷到的時候再取絕對值,遇到已經(jīng)標記的數(shù),就不需要再標記了,所以標記的時候要判斷是否大于0。最后再遍歷整個數(shù)組大于0的數(shù)就是沒出現(xiàn)過的數(shù)。
public class Solution {
    public List<Integer> findDisappearedNumbers(int[] nums) {
        for(int i=0;i<nums.length;i++)
        {
    
                int index =Math.abs(nums[i])-1;
                if(nums[index]>0)
            nums[index]=-nums[index];
            
        }
        List<Integer> list = new ArrayList<Integer>();
        for(int j=0;j<nums.length;j++)
        {
            if(nums[j]>0)
            list.add(j+1);
        }
        return list;
    }
}

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多