这题乍一看不难,但是加上了O(n)的时间复杂度和O(1)的空间复杂度之后,就变得让人无从下手了,我是想到了集合方法,a是a了,但是没达到要求,求证了官方题解之后才豁然,异或太妙了
集合的方法
def singleNumber(self, nums: List[int]) -> int:
seen = set()
for i in range(len(nums)):
if nums[i] not in seen:
seen.add(nums[i])
elif nums[i] in seen:
seen.remove(nums[i])
return seen.pop()
异或的方法
def singleNumber(self, nums: List[int]) -> int:
return reduce(lambda x, y :x^y, nums)
这篇博客探讨了一道算法题,要求在O(n)时间复杂度和O(1)空间复杂度下找出数组中唯一重复的数字。作者首先尝试了使用集合的方法,但未满足空间复杂度要求,随后介绍了如何巧妙地通过异或操作解决这个问题。异或操作可以将数组中的所有元素进行运算,最后得到的就是唯一重复的数字。这种方法既简单又高效。
86

被折叠的 条评论
为什么被折叠?



