力扣第一刷:面试题53

链接:

面试题53 - II. 0~n-1中缺失的数字

题解:

前缀异或或者二分

1.

class Solution {
public:
    int missingNumber(vector<int>& nums) {
            int size=nums.size();
            int yi=0;
            for(int i=0;i<size+1;i++)
                    yi^=i;
            int yi2=0;
            for(int i=0;i<size;i++)
                yi2^=nums[i];
            int res=yi^yi2;
            return res;
    }
    
};

2.

class Solution {
public:
    int missingNumber(vector<int>& nums) {
           int left = 0;
           int right=nums.size();
           while(left<right)
           {
               int mid=(left+right)>>1;
               if(nums[mid]==mid)
                    left=mid+1;
                else
                    right=mid;
           }
            return left;
    }
    
};
原文地址:https://www.cnblogs.com/Vampire6/p/13024758.html