Posted on 2023-07-05 00:36
Uriel 阅读(25)
评论(0) 编辑 收藏 引用 所属分类:
闲来无事重切Leet Code 、
位运算
一个数列,有一个数只出现1次,其他所有数都出现3次,找出出现1次的数
思路见9年前C++版本的记录->http://www.cppblog.com/Uriel/articles/205406.html
Python版 (注意处理负数的情况,看了Discussion才意识到)
1 #137
2 #Runtime: 83 ms (Beats 39.2%)
3 #Memory: 14.8 MB (Beats 89.66%)
4
5 class Solution(object):
6 def singleNumber(self, nums):
7 """
8 :type nums: List[int]
9 :rtype: int
10 """
11 ans = 0
12 for i in range(32):
13 cnt = 0
14 for m in nums:
15 t = (m >> i) & 1
16 cnt += t
17 cnt %= 3
18 if cnt and i == 31:
19 ans -= 1 << 31
20 else:
21 ans |= cnt << i
22 return ans