您的位置:首页 > 其它

leetcode-268-Missing Number

2017-02-06 23:59 239 查看

问题

题目:[leetcode-268]

思路

主要是对空间的限制比较严格。

想到的办法就是,反正就是数组嘛。也没什么别的方法,试试加起来看看,或者减一下试试。

需要特别注意的是:[1,2,3]和[0,1,2]这种他们本生就是等差数列。要判断初始项是不是为0。

代码

class Solution {
public:
int missingNumber(vector<int>& nums) {
int sz = nums.size();
if(1==sz){
if(nums[0]) return 0;
else return 1;
}

int min = nums[0];
int max = nums[0];
int sum = nums[0];

for( int i = 1; i < sz; ++i ){
sum += nums[i];
if( nums[i] > max ) max = nums[i];
if( nums[i] < min ) min = nums[i];
}

int expected = max*(max+1)/2;// 等差数列求和
if( expected - sum ) return expected-sum;
else return (min)?0:max+1;
}
};


代码

看了看别人的方法[位运算实现]

class Solution {
public:
int missingNumber(vector<int>& nums) {
int sz = nums.size();
int res = 0;
for(int i = 0; i < sz; ++i){
res ^= ( (i+1)^nums[i] );
}
return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: