【题目】
【代码】
执行用时:40 ms, 在所有 Python3 提交中击败了46.05% 的用户
内存消耗:16.9 MB, 在所有 Python3 提交中击败了16.15% 的用户
通过测试用例:14 / 14
class Solution:
def singleNonDuplicate(self, nums: List[int]) -> int:
cnt=Counter(nums)
for key in cnt:
if cnt[key]==1:
return key
【方法2】异或运算
因为题目中说了,每个数字都
class Solution:
def singleNonDuplicate(self, nums: List[int]) -> int:
ans=nums[0]
for i in range(1,len(nums)):
ans^=nums[i]
return ans
【方法3:进阶法】二分
执行用时:32 ms, 在所有 Python3 提交中击败了89.12% 的用户
内存消耗:16.8 MB, 在所有 Python3 提交中击败了68.50% 的用户
通过测试用例:14 / 14
class Solution:
def singleNonDuplicate(self, nums: List[int]) -> int:
left,right=0,len(nums)-1
while left<right:
mid=left+(right-left)//2
if nums[mid^1]==nums[mid]:
left=mid+1
else:
right=mid
return nums[left]
【方法4】二分
执行用时:44 ms, 在所有 Python3 提交中击败了21.19% 的用户
内存消耗:16.9 MB, 在所有 Python3 提交中击败了19.82% 的用户
通过测试用例:14 / 14
class Solution:
def singleNonDuplicate(self, nums: List[int]) -> int:
left,right=0,len(nums)-1
while left<right:
mid=left+(right-left)//2
mid -= mid & 1
if nums[mid+1]==nums[mid]:
left=mid+2
else:
right=mid
return nums[left]

这篇博客介绍了四种不同的Python方法来解决寻找列表中唯一非重复元素的问题。方法包括使用Counter统计、异或运算和两种不同的二分查找策略。这些高效算法在执行时间和内存消耗上各有优势,并且都在测试用例中通过了验证。
348

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



