由于异或运算满***换律和结合律,所以总是能把成对儿的数字消去,留下缺失的那个元素的。 
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 找缺失数字
     * @param a int整型vector 给定的数字串
     * @return int整型
     */
    int solve(vector<int>& a) {
        // write code here
        if(!a.size()) return 0;
        int n = a.size();
        int res = 0;
        // 先和新补的索引异或一下
        res^= n;
        // 和其他的元素、索引做异或
        for(int i = 0;i<n;i++){
            res^= i^a[i];
        }
        return res;
    }
};
京公网安备 11010502036488号