LeetCode 136. Single Number & 268. Missing Number

Posted 約束の空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 136. Single Number & 268. Missing Number相关的知识,希望对你有一定的参考价值。

136. Single Number

考察的是异或运算。相同的数异或结果为0,一个数与0异或还是原来的数,以及异或符合交换律。因此,把所有的数都异或起来,结果就是落单的那个数。

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int res=0;
        for (int num:nums){
            res ^= num;
        }
        return res;
    }
};

 

268. Missing Number

 可以用数学方法直接做,求和减去数组的和就是所求答案。

用位操作来做的话,同样用异或。把这一道题向上一道题转化,即在数组元素全部异或以后,再把1~n的数字异或上,就和上一道题一模一样了。

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int res=0;
        int tmp=1;
        for (int i=0;i<nums.size();++i){
            res ^= nums[i]^(tmp++);
        }
        return res;
    }
};

 

以上是关于LeetCode 136. Single Number & 268. Missing Number的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode-136 Single Number

LeetCode 136 Single Number

LeetCode 136. Single Number

LeetCode 136. Single Number

[leetcode]136.Single Number

[Leetcode] 136. Single Number