位操作系列2-leetcode136(c++/python)

题目

思路

这道题可以使用异或操作!

啥叫异或?(图片来源2)

异或操作有以下特点

  • 任何数与0异或结果为其自身: a^0=a
  • 任何数与自己异或,结果为0: a^a=0
  • 异或满足交换律和结合律: aba=(aa)b=b

这道题,只有1个数出现了1次,其余都出现了2次,根据上述特点,可以高效求解。

题解

C++:

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

Python:

from functools import *
class Solution(object):
    def singleNumber(self, nums):
        return reduce(lambda x,y:x^y,nums)

参考

1.https://leetcode-cn.com/problems/single-number/

2.https://mp.weixin.qq.com/s/YasCeiVzUlS-pMBa0nUpsg

posted @ 2020-03-30 18:47  depth-perception  阅读(161)  评论(0)    收藏  举报