题目链接:点击这里
自己想到的还算简单的思路:高斯求和减去数组求和(有溢出风险)
class Solution {
public:
int missingNumber(vector<int>& nums) {
int n = nums.size();
int sum = 0;
for(int i = 0; i < n; i++) {
sum += nums[i];
}
return n*(n+1)/2 - sum;
}
};
哈希表:
LeetCode迷之错误:control reaches end of non-void function[werror=return-type];
有时我们在一块程序里已经有return,但不是在这块代码的结尾,LeetCode也会编译不通过。 所以,我们也要在函数的代码块结尾也return一下。
class Solution {
public:
int missingNumber(vector<int>& nums) {
set<int> st;
for(int i = 0; i < nums.size(); i++) {
st.insert(nums[i]);
}
int i;
for(i = 0; i <= nums.size(); i++) {
if(st.find(i)==st.end())
return i; //看这里
}
return i; //虽然用不到,但还是要有
}
};
异或运算:
参考题目:点击这里
class Solution {
public:
int missingNumber(vector<int>& nums) {
int ans = 0;
for(int i = 0; i <= nums.size(); i++) {
ans ^= i;
}
for(int i = 0; i < nums.size(); i++) {
ans ^= nums[i];
}
return ans;
}
};
菜是原罪QAQ
发布了679 篇原创文章 · 获赞 103 · 访问量 11万+
关注