136. Single Number

意思就是给你一堆数,每个数都出现了两次,只有一个数只出现了一次,找出这个数

位运算(和c艹一样)

&:按位与

|:按位或

^:异或(一样为0,不一样为1)

再说一下异或的性质,满足交换律和结合律

因此:

  对于任意一个数n

  n ^ 0 = n

  n ^ n = 0

  对于这道题来说,所有数依次异或剩下的就是那个数了

  

 class Solution(object):
def singleNumber(self, nums):
ans = 0
for i in nums:
ans ^= i
return ans

127. Single Number II

意思就是所有的数都出现了三遍,只有一个数出现了一遍,求这个数

这个题没明白位运算怎么算的

对于给定数组nums,剔除所有重复元素后为nums',要求答案ans,则有sum(nums)*3 - sum(num) = 2 * ans

则有表达式(int)((3*sum(set(nums)) - sum(nums)) / 2)

  

 class Solution:
def singleNumber(self, nums):
return (int)((3*sum(set(nums)) - sum(nums)) / 2)

260. Single Number III

给你一个数组,所有的数都出现了两边,有两个数出现了一遍,找出这两个数

思路是,只要把这两个数m,n分到不同的两组中,就转化为了第一个问题

对于这道题来说,不需要真正的找到这两个数,只需要找出不同就行了

我们先把所有数异或起来,那么结果就是m ^ n,那么我们找到这个m ^ n的lowbit(不知道的你或许该看看树状数组???)

那么m,n的lowbit一定不一样,所以lowbit为1的和m异或,lowbit为0的和n异或就完成了

那么我们不用管其他数,因为对于两个一样的数,他们的等价的lowbit上一定一样,所以势必会被分到同一组

这个看代码更容易理解

 class Solution:
def singleNumber(self, nums):
A = 0
B = 0
diff = 0
length = len(nums)
for i in range(length):
diff ^= nums[i]
lowbit = diff & (-diff)
for i in range(length):
if (nums[i] & lowbit) != 0:
A ^= nums[i]
else:
B ^= nums[i]
return [A,B]

136.137.260. Single Number && 位运算的更多相关文章

  1. 136. Single Number(位运算)

    Given a non-empty array of integers, every element appears twice except for one. Find that single on ...

  2. leetcode 136. Single Number 、 137. Single Number II 、 260. Single Number III(剑指offer40 数组中只出现一次的数字)

    136. Single Number 除了一个数字,其他数字都出现了两遍. 用亦或解决,亦或的特点:1.相同的数结果为0,不同的数结果为1 2.与自己亦或为0,与0亦或为原来的数 class Solu ...

  3. leetcode 136 Single Number, 260 Single Number III

    leetcode 136. Single Number Given an array of integers, every element appears twice except for one. ...

  4. LeetCode 260. Single Number III(只出现一次的数字 III)

    LeetCode 260. Single Number III(只出现一次的数字 III)

  5. 137.Single Number II---位运算---《剑指offer》40

    题目链接:https://leetcode.com/problems/single-number-ii/description/ 题目大意:给出一串数,每个数都出现三次,只有一个数只出现一次,把这个出 ...

  6. LeetCode(137) Single Number II

    题目 Given an array of integers, every element appears three times except for one. Find that single on ...

  7. 【一天一道LeetCode】#260. Single Number III

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

  8. [LeetCode] 260. Single Number III 单独数 III

    Given an array of numbers nums, in which exactly two elements appear only once and all the other ele ...

  9. 【刷题-LeeetCode】260. Single Number III

    Single Number III Given an array of numbers nums, in which exactly two elements appear only once and ...

随机推荐

  1. 【问题解决方案】之 Word 公式编辑器 使用小tips

    输入空格:shift+Ctrl+space 换行:直接回车.之后在上方菜单栏中选择"在等号处对齐"

  2. 解决ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

    解决办法:

  3. 【Python3练习题 005】输入三个整数x,y,z,请把这三个数由小到大输出

    import re x, y, z = re.split(',| |,| ', input('请输入3个数字,用逗号或空格隔开:'))x, y, z = int(x), int(y), int(z) ...

  4. 配置react-sass

    在配置react-sass时遇到很多坑其中 一条如果你的.scss文件失效 请一定要在fileloader之前配置该sass-loader 配置文件如下 基于你不熟悉webpack 容易出这个错误

  5. springboot注解@SpringBootApplication分析

    @SpringBootApplication注解用在Spring Boot的入口类上面,是Spring Boot提供的应用启动相关的注解. 直接上注解的源码: @Target(ElementType. ...

  6. Windows NT 的历史

    Windows NT 的版本历史 https://blog.csdn.net/flyingpig2016/article/details/53282895/ 按照自己找到的资料:windows NT ...

  7. CLOUD添加自定义基础数据

    1.打开bos平台,文件-新建-复制-基础资料 2.新建目标对象 3.发布 4.开始新增对象 5.明细维护,完成 6.添加成功

  8. Client将数据读写HDFS流程

    HDFS介绍 HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.是根据google发表的论文翻版的. 什么是分布式文件系统 分布式文件系统(Dist ...

  9. 八、.net core 通过数据库配置文件连接操作数据库

    一.创建DotNetCore项目 直接创建core项目并不勾选docker支持  二.nuget进行连接MySQL程序集的下载安装 1.MySql.Data.EntityFrameworkCore方式 ...

  10. css进行网站布局

    一.一列布局(例如百度首页) 通常用 {margin:0 auto;} 控制. <!DOCTYPE> <html xmlns="http://www.w3.org/1999 ...