当前位置:网站首页>leetcode:剑指 Offer 56 - I. 数组中数字出现的次数【分组异或】
leetcode:剑指 Offer 56 - I. 数组中数字出现的次数【分组异或】
2022-06-09 18:39:00 【白速龙王的回眸】

分析
如果全都是两次出现,只有一个一次出现
那么一次出现的那个就是全部异或
但此时有两个一次出现的,所以全部异或的就是这两个目标a和b的异或res
我们找到res中某一位是1的来区分a和b
然后其他相同的话肯定会分到同一组
这样就是分组异或得到两个结果就是那两个出现1次的数
ac code
class Solution:
def singleNumbers(self, nums: List[int]) -> List[int]:
# 分组异或
# reduce(func, list)
res = reduce(lambda x, y: x ^ y, nums)
# find a bit to divide these two nums
div = 1
while div & res == 0:
div <<= 1
a, b = 0, 0
# two groups and xor
for num in nums:
if num & div:
a ^= num
else:
b ^= num
return [a, b]
总结
若干出现偶数,一个出现奇数,通过异或消除偶数次出现的(神奇的异或)
注意一下reduce的用法:reduce(func, list)
边栏推荐
- Alibaba open source TTL is used in microservices to gracefully realize inter thread reuse of identity information
- 数据库:高并发下的数据字段变更
- 解决swap file .swp already exists 问题
- 期货公司 开户,安全开户流程?
- 刷脸认证如何实现人脸又快又准完成校验?
- 避免惊群以及负载均衡的原理与具体实现
- 220609-R
- [pb03f environment setup] Bluetooth 5.2 Anxin Ke pb-03f-kit development board secondary development environment setup
- C# 34. UdpClient transceiver
- 循环结构程序设计2
猜你喜欢
随机推荐
My younger brother Dan Teng, yincuisiting, is a robot human typewriter~~~~~~
Scala基本语法学习-1
Notes on ad PCB drawing
外汇交易MT4是什么软件?MT4与MT5有何区别?下载MT4要注意什么?
AD PCB画图透明度
循环结构程序设计2
Stlink-v2-1 burning to cmsis-dap
【PB03F 环境搭建】蓝牙5.2安信可PB-03F-Kit开发板二次开发环境搭建
Golang Foundation (4)
How to improve the click through rate of push messages through a/b testing?
20220603怎么查询公网IP
11年程序员给本科、研究生应届生以及准备从事后台开发同学的建议,学习进阶之路
MySQL parallel replication (MTS) principle (full version)
C# 32. 静态类实现下拉框选择网卡
Golang基础(5)
Deep understanding of JVM and GC
技术分享 | Selenium多浏览器处理
How to measure differential signal with high voltage differential probe
2022 SME Digital Forum held 360 Enterprise Security Cloud release new upgrade
mysql数据库角色如何创建






