我是靠谱客的博主 传统长颈鹿,最近开发中收集的这篇文章主要介绍260. 只出现一次的数字 III -- python,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

给定一个整数数组 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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部