概述
给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。
进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?
第一种:哈希表
def singleNumber(self, nums: List[int]) -> List[int]:
dictionary = Counter(nums)
return [num for num, occ in dictionary.items() if occ == 1]
第二种:异或
def singleNumber(self, nums: List[int]) -> List[int]:
xorsum = 0
for num in nums:
#相同的消除,剩下的是唯二不同的
xorsum ^= num
#二进制中,唯二不同的数字转为二进制后不相同的最小位数:111,101-->2
lsb = xorsum & -xorsum
num1 = num2 = 0
for num in nums:
#根据最小位数的不同进行分类
if num & lsb:
#相同的消除,大浪淘沙,学渣留下来了
num1 ^=num
else:num2 ^=num
return [num1, num2]
最后
以上就是传统长颈鹿为你收集整理的260. 只出现一次的数字 III -- python的全部内容,希望文章能够帮你解决260. 只出现一次的数字 III -- python所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复