其他分享
首页 > 其他分享> > 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;
    }
};
菜是原罪QAQ 发布了679 篇原创文章 · 获赞 103 · 访问量 11万+ 他的留言板 关注

标签:return,missingNumber,nums,int,sum,Number,268,LeetCode
来源: https://blog.csdn.net/qq_42815188/article/details/104060714