您的位置:首页 > 其它

268. Missing Number

2016-06-28 11:39 316 查看
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?

题意:给出数组nums,nums的长度是n,里边放的是0-n之间的不同的值,找出丢失的值。

思路:把数组所有值加一块儿sum,用0-n的总和值减去sum就是缺失的值。

class Solution {
public:
int missingNumber(vector<int>& nums) {
const int size = nums.size();
int sum = 0;
for (int i = 0; i < nums.size(); i++){
sum += nums[i];
}
int expectSum = size*(size + 1) / 2;
return expectSum - sum;
}
};思路2:大神的思路是,假设0-5之间的缺失值是4,则0^1^2^3^4^5^0^1^2^3^4^5=4.利用了0^n=n, n^n=0的性质。
class Solution {
public:
int missingNumber(vector<int>& nums) {
int n = nums[0];
for (int i = 1; i < nums.size(); i++)
n ^= nums[i];
for (int i = 0; i <= nums.size(); i++)
n ^= i;
return n;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: