268. Missing Number
2017-08-04 09:46
183 查看
题目:
Given an array containing n distinct numbers taken from
find the one that is missing from the array.
For example,
Given nums =
思路:
本题其实比较有趣,方法有很多,本文介绍两种主流方法,第一种"sub solution",顾名思义做减法,一个数组存在一个缺失值,原先数组是连续数字组成,那么做减法就可以了;第二种思路是“bit solution"位操作本质上与减法操作并无不同,只要原先数组与缺失值数组逐位相与即得缺失值
代码:
//sub solution
class Solution {
public:
int missingNumber(vector<int>& nums) {
int sum =0;
int n = nums.size();
for(auto& a:nums)
sum+=a;
return 0.5 * n * (n + 1) - sum;
}
};代码:
class Solution {
public:
int missingNumber(vector<int>& nums) {
int res =0;
for(int i=0;i<nums.size();i++)
res^=(i+1)^nums[i];
return res;
}
};
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.
思路:
本题其实比较有趣,方法有很多,本文介绍两种主流方法,第一种"sub solution",顾名思义做减法,一个数组存在一个缺失值,原先数组是连续数字组成,那么做减法就可以了;第二种思路是“bit solution"位操作本质上与减法操作并无不同,只要原先数组与缺失值数组逐位相与即得缺失值
代码:
//sub solution
class Solution {
public:
int missingNumber(vector<int>& nums) {
int sum =0;
int n = nums.size();
for(auto& a:nums)
sum+=a;
return 0.5 * n * (n + 1) - sum;
}
};代码:
class Solution {
public:
int missingNumber(vector<int>& nums) {
int res =0;
for(int i=0;i<nums.size();i++)
res^=(i+1)^nums[i];
return res;
}
};
相关文章推荐
- 【LeetCode】 268. Missing Number
- Leetcode 268. Missing Number
- 268. Missing Number
- 268. Missing Number
- 268. Missing Number
- LeetCode - 268. Missing Number
- 268. Missing Number
- 268. Missing Number
- 268. Missing Number(查找遗漏的数)
- 268. Missing Number
- 268. Missing Number
- Leetcode--268. Missing Number
- 268. Missing Number
- leetcode-java-268. Missing Number
- LeetCode 268. Missing Number - 求和、异或
- 2018.03.15 leetcode 打卡 #268. Missing Number
- LeetCode - 268. Missing Number
- Leetcode-268. Missing Number
- 268. Missing Number(C语言)
- 268. Missing Number