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 ...
随机推荐
- 后台管理系统之系统操作日志开发(Java实现)
一,功能点 实现管理员操作数据的记录.效果如下 二,代码实现 基于注解的Aop日志记录 1.Log实体类 package com.ideal.manage.guest.bean.log; import ...
- WPF中定时器Timer与DispatcherTimer的用法
最近的工作项目中需要定时更新UI控件中的数据,这时候第一反应肯定会想到去使用System.Timers.Timer定时更新UI控件,但是程序运行后,会发现程序崩溃了.报的异常为“调用线程无法访问此对象 ...
- php单元测试
https://blog.csdn.net/gaisidewangzhan1/article/details/80347008
- docker开启加速(第三篇)
前言: docker的镜像仓库在国外,下载会很慢,启用阿里云加速. 第一步:cd /etc/docker目录下,打开daemon.json 第二步:修改daemon.json文件,添加阿里云加速: ...
- bootstrap modal垂直居中(简单封装)
1.使用modal 弹出事件方法: 未封装前: <!DOCTYPE html> <html lang="en"> <head> <meta ...
- node 模块化思想中index.js的重要性
目录结构如上图 module1和modlue2.main在同一级 module1下文件: index.js var test2=require('./test2'); var sayHi=functi ...
- flutter 动画双指放大图片
class GridAnimation extends StatefulWidget { @override State<StatefulWidget> createState() { r ...
- ubunto启动chrome报错
/usr/bin/google-chrome-stable[5199:5199:0703/143543.136117:ERROR:zygote_host_impl_linux.cc(88)] Runn ...
- spring boot 获取bean
在写测试用例的时候,如果是springboot的应该加上 springboot的标签: @SpringBootTest(classes = ApplicationLoader.class) @Acti ...
- docker 列出每个容器的IP
抄来的...找不到出处了. 常用方法有两种 docker inspect 容器ID | grep IPAddress 方法二 查看docker name: sudo docker inspect ...