这篇文章主要为大家展示了“LeetCode如何求数组中数字出现的次数”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“LeetCode如何求数组中数字出现的次数”这篇文章吧。
在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。
输入:nums = [3,4,3,3]
输出:4
输入:nums = [9,1,7,9,7,9,7]
输出:1
O(32) == O(1)
, 所以总体复杂度仍为 O(N)class Solution:
def singleNumber(self, nums: List[int]) -> int:
res = 0
for i in range(32):
# 当前统计的位数为第i位
# 假设i==1, 对应的mask就是0b000...00010 (共32位, 高位全为0)
mask = 1 << i
cnt = 0
for x in nums:
if x & mask:
# 如果这个数字与mask相与的结果为1, 则说明其当前位为1, 累加到次数中
cnt += 1
if cnt % 3 == 1:
# 如果次数为1, 则说明出现一次的数字在这一位上为1, 将最终结果或上当前mask即可
res |= mask
# 当然也可以选择结果加上mask, 因为每个mask都是只有一位为1且各不相同
# res += mask
return res
以上是“LeetCode如何求数组中数字出现的次数”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。