Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is >missing from the array.
For example,
Given nums = [0, 1, 3] return 2.
在有范圍的n個(gè)數(shù)中找出沒有出現(xiàn)的哪一個(gè)糖儡,那么其他的數(shù)字都出現(xiàn)了一遍,申請(qǐng)一個(gè)空間為O(n)的標(biāo)志位數(shù)組flag[],初始化為0,遍歷nums[]退子,令 flag[nums[i]-1] = 1
,最后找出0對(duì)應(yīng)的index馍驯。
代碼
int missingNumber(vector<int>& nums) {
vector<int> flag(nums.size()+1, 0);
for(int num:nums){
flag[num] = 1;
}
for(int i=0; i<flag.size()+1; i++){
if(flag[i] == 0){
return i;
}
}
}
位操作方法
XOR異或的方法:abb = a
int missingNumber(vector<int>& nums) {
int result = nums.size();
int i=0;
for(int num:nums){
result ^= num;
result ^= i;
i++;
}
return result;
}