您的位置:首页 > 其它

[Leetcode] #268 Missing Number

2017-09-16 14:44 399 查看
DiscriptionGiven 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
.Solution1.求和再减,注意溢出int missingNumber(vector<int>& nums) {
int n = nums.size();
int sum = n*(n + 1) / 2;
for (int num : nums) {
sum -= num;
}
return sum;
}2.异或int missingNumber(vector<int>& nums) {
int n = nums.size();
int res = n;
for (int i = 0; i<n; i++){
res ^= nums[i];
res ^= i;
}
return res;
}3.二分
int missingNumber(vector<int>& nums) {
int n = nums.size();
sort(nums.begin(), nums.end());
int left = 0, right = n, mid = 0;
while (left<right){
mid = (left + right) >> 1;
if (nums[mid]>mid)
right = mid;
else
left = mid + 1;
}
return left;
}
4.交换,用索引标注int missingNumber(vector<int>& nums) { //变换,用索引标注
int n = nums.size();
for (int i = 0; i<n; i++) {
while (nums[i] >= 0 && nums[i]<n && nums[i] != i)
swap(nums[i], nums[nums[i]]);
}
for (int i = 0; i<n; i++) {
if (i != nums[i])
return i;
}
return n;
}GitHub-Leetcode:https://github.com/wenwu313/LeetCode
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: