136.137.260. Single Number && 位运算
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 && 位运算的更多相关文章
- 136. Single Number(位运算)
Given a non-empty array of integers, every element appears twice except for one. Find that single on ...
- leetcode 136. Single Number 、 137. Single Number II 、 260. Single Number III(剑指offer40 数组中只出现一次的数字)
136. Single Number 除了一个数字,其他数字都出现了两遍. 用亦或解决,亦或的特点:1.相同的数结果为0,不同的数结果为1 2.与自己亦或为0,与0亦或为原来的数 class Solu ...
- leetcode 136 Single Number, 260 Single Number III
leetcode 136. Single Number Given an array of integers, every element appears twice except for one. ...
- LeetCode 260. Single Number III(只出现一次的数字 III)
LeetCode 260. Single Number III(只出现一次的数字 III)
- 137.Single Number II---位运算---《剑指offer》40
题目链接:https://leetcode.com/problems/single-number-ii/description/ 题目大意:给出一串数,每个数都出现三次,只有一个数只出现一次,把这个出 ...
- LeetCode(137) Single Number II
题目 Given an array of integers, every element appears three times except for one. Find that single on ...
- 【一天一道LeetCode】#260. Single Number III
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...
- [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 ...
- 【刷题-LeeetCode】260. Single Number III
Single Number III Given an array of numbers nums, in which exactly two elements appear only once and ...
随机推荐
- Python_数据类型的补充、集合set、深浅copy
1.数据类型的补充 1.1 元组 当元组里面只有一个元素且没有逗号时,则该数据的数据类型与括号里面的元素相同. tu1 = ('laonanhai') tu2 = ('laonanhai') prin ...
- 多线程系列之十一:Two-Phase Termination模式
一,Two-Phase Termination模式 翻译过来就是:分两阶段终止 二,示例程序 public class CountupTread extends Thread { private lo ...
- echarts使用笔记一:基本属性
1.包括一些基本的设置 app.title = '坐标轴刻度与标签对齐'; option = { title : { //标题 x : 'center', y : 5, text : '单通趋势图' ...
- laravel 关联中的预加载
预加载 当作为属性访问 Eloquent 关联时,关联数据是「懒加载」的.意味着在你第一次访问该属性时,才会加载关联数据.不过,是当你查询父模型时,Eloquent 可以「预加载」关联数据.预加载避免 ...
- Day1 基础知识
数据类型,字符编码 二进制: 定义:二进制数据是用0和1两个数码来表示的数.它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”.当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是 ...
- Spring的Bean配置
IOC和DI 网上概念很多,感兴趣可以去搜一搜,在这里我就给个比喻: IOC:以前我们买东西都要去商店买,用了IOC之后,我们只要在门口放个箱子, Spring就会给我相应商品,ಠᴗಠ 举个例子 cl ...
- PDO连接mysql数据库加载慢
今天在使用PDO连接mysql操作数据库的时候,发现速度特别慢,都1~2s的时间,不知道怎么回事,后来一步一步排除到new PDO 导致过慢的原因, 这个尴尬了...,调试了半天都没想到问下度娘,才知 ...
- 用 Python 写一个多进程兼容的 TimedRotatingFileHandler
我前面有篇文章已经详细介绍了一下 Python 的日志模块.Python 提供了非常多的可以运用在各种不同场景的 Log Handler. TimedRotatingFileHandler 是 Pyt ...
- 工程师常犯的web后台界面用户体验错误
- SSM+shiro及相关插件的整合maven所有依赖,详细注释版,自用,持续更新
整合了SSM+shiro框架,slf4j+logback日志,及一些好用的插件PageHelper,mybatis-generator,Lombok,fastjson等等 <?xml versi ...