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

Posted depth-perception

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了位操作系列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

以上是关于位操作系列2-leetcode136(c++/python)的主要内容,如果未能解决你的问题,请参考以下文章

136.137.260. Single Number && 位运算

leadcode的Hot100系列--136. 只出现一次的数字

普冉PY32系列 PY32F0系列32位Cortex M0+ MCU简介

youcans 的 OpenCV 例程200篇136. 灰度腐蚀和灰度膨胀

136. Single Number

Leetcode136. 只出现一次的数字(位运算)