[Leetcode] #268 Missing Number
2017-09-16 14:44
399 查看
DiscriptionGiven an array containing n distinct numbers taken from
Given 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 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
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
相关文章推荐
- 位操作-leetcode 268 Missing Number
- leetcode【268 Missing Number】【Python】
- Leetcode 268 Missing Number
- [LeetCode]268 Missing Number
- leetcode——268——Missing Number
- Leetcode-268 Missing Number
- LeetCode 268 Missing Number (位运算)
- LeetCode268——Missing Number相濡以沫不如相忘于江湖
- LeetCode 268 Missing Number
- [LeetCode-268] Missing Number(找缺失的数字)
- Java [Leetcode 268]Missing Number
- [LeetCode 268] Missing Number
- leetcode_268_Missing Number(Medium)
- [leetcode 268]Missing Number
- LeetCode(268) Missing Number
- [LeetCode]268 Missing Number
- 【LeetCode】268 Missing Number
- Leetcode 268 Missing Number
- [LeetCode268]Missing Number
- LeetCode - 268 - Missing Number