题目链接:https://leetcode-cn.com/problems/que-shi-de-shu-zi-lcof/
题目如下:
解法一:二分法
思路:
class Solution {
public:
int missingNumber(vector<int>& nums) {
int size=nums.size();
if(size==0) return 0;
int low=0,high=size-1,mid;
while(low<high){
mid=(low+high)/2;
if(nums[mid]!=mid) high=mid; //[L,R]->[L,M]
else low=mid+1; //nums[mid]==mid;[L,R]->[M+1,R]
}
if(nums[high]==high) high++;//整个序列是从0~n-1,丢失的数字为n
return high;
}
};
解法二:非二分法
class Solution {
public:
int missingNumber(vector<int>& nums) {
int sum=0;
for(const auto &e:nums){
sum+=e;
}
int len=nums.size();
int realsum=len*(len+1)/2;
return realsum-sum;
// int n=nums.size();
// int sum=0;
// for (const auto &e : nums) {
// sum += e;
// }
// int realSum=n*(n+1)/2;
// return realSum - sum;
}
};