LeetCode 268. Missing Number

题目链接:点击这里
LeetCode 268. Missing Number
自己想到的还算简单的思路:高斯求和减去数组求和(有溢出风险)

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;
    }
};
LeetCode 268. Missing NumberLeetCode 268. Missing Number 菜是原罪QAQ 发布了679 篇原创文章 · 获赞 103 · 访问量 11万+ 他的留言板 关注
上一篇:python基础练习题(一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?)


下一篇:[LC] 268. Missing Number