面試題 17.19. 消失的兩個數字-----leetcode

給定一個數組,包含從 1 到 N 所有的整數,但其中缺了兩個數字。你能在 O(N) 時間內只用 O(1) 的空間找到它們嗎?

以任意順序返回這兩個數字均可。

示例 1:

輸入: [1]
輸出: [2,3]
示例 2:

輸入: [2,3]
輸出: [1,4]
提示:

nums.length <= 30000

AC代碼:

class Solution {
    public int[] missingTwo(int[] nums) {
        Arrays.sort(nums);
        int flag=1,j=0;
        int[] vis=new int[2];
        for(int i=0;i<nums.length&&j<2;i++){
            if(nums[i]!=flag){
                vis[j++]=flag;
                if(flag==nums[i]-1){
                    flag=nums[i];
                }
            }
            flag++;
        }
        while(j<2){
            if(flag!=nums[nums.length-1]){
                vis[j++]=flag++;
            }
            else{
                flag++;
            }
        }
        return vis;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章