您的位置:首页 > 编程语言 > C语言/C++

268. Missing Number

2016-06-24 21:39 309 查看
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
.

Note:

Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?

1.我的答案  存在integer overflow问题

class Solution {
public:
int missingNumber(vector<int>& nums) {
int n = nums.size();
int sum1 = 0, sum2 = 0;
for(int i = 0; i < n; i++){
sum1 +=i;
sum2 +=nums[i];
}
sum1 += n;
return sum1 - sum2;
}
};

2.别人的答案 很赞啊 用了位运算
class Solution {
public:
int missingNumber(vector<int>& nums) {
int result = nums.size();
int i=0;

for(int num:nums){
result ^= num;
result ^= i;
i++;
}

return result;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ bit manipulation