Given an array containing n distinct numbers taken from 0, 1, 2, ..., n
, find the one that is missing from the array.
Example 1
Input: [3,0,1] Output: 2
Example 2
Input: [9,6,4,2,3,5,7,0,1] Output: 8
Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
题意:
找一列连续数中消失的那个数。
思路:
1、再开一个bool数组,把原来出现的都设置成true,只需遍历一次找false的就行。
2、惊为天人的做法。求和之后,再用0-n之和减去出现的数之和。
代码:
class Solution {
public:
int missingNumber(vector<int>& nums) {
int n=nums.size();
if(n==1)
{
if(nums[0]==0)
return 1;
else
return 0;
}
vector<int>temp(n+1);
for(int i=0;i<n;i++)
temp[nums[i]]=1;
for(int i=0;i<=n;i++)
{
if(!temp[i])
return i;
}
}
};
class Solution {
public int missingNumber(int[] nums) {
int n=nums.length;
int sum=0;
for(int i=0;i<n;i++)sum+=nums[i];
return (n+1)*(n)/2-sum;
}
}