268. Missing Number

原題

  • 題目描述:長爲n的數組,元素值爲0~n,且不重複,求你找出未曾出現的那個數字
  • 思路:藉助XOR異或操作的特性即a^b^b=a的騷操作是最快的

移位實現

int missingNumber(int* nums, int numsSize) {
    int res=numsSize;
    for(int i=0;i<numsSize;i++){
            res=res^i^nums[i];
    }
    return res;
}

標記數組實現

class Solution {
    public int missingNumber(int[] nums) {
        int[] res=new int[nums.length+1];
        for(int i=0;i<nums.length;i++){
            res[nums[i]]=1+nums.length;
        }
        for(int i=0;i<res.length;i++){
            if(res[i]<nums.length){
                return i;
            }
        }
        return 0;
    }
}

二分查找法

public int missingNumber(int[] nums) { //binary search
    Arrays.sort(nums);
    int left = 0, right = nums.length, mid= (left + right)/2;
    while(left<right){
        mid = (left + right)/2;
        if(nums[mid]>mid) right = mid;
        else left = mid+1;
    }
    return left;
}
發佈了80 篇原創文章 · 獲贊 35 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章