码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 136. Single Number & 268. Missing Number

时间:2018-06-03 10:48:13      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:ret   for   int   相同   数字   数组元素   enum   code   div   

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

标签:ret   for   int   相同   数字   数组元素   enum   code   div   

原文地址:https://www.cnblogs.com/hankunyan/p/9127631.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!