【发布时间】:2022-01-22 12:22:36
【问题描述】:
这是来自 LeetCode #217 的问题。给定一个整数数组nums,如果任何值在数组中至少出现两次,则返回True,如果每个元素都是不同的,则返回False。
这是我的代码。我不明白为什么列表没有重复时会出错?
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
nums.sort()
b = False
i = 0
while i < len(nums) + 1:
if nums[i] == nums[i+1]:
b = True
return b
else:
b = False
return b
【问题讨论】:
-
i永远不会更新。如果nums是[1,2,3],它只会不断检查nums[0]。 -
len(nums) != len(set(nums))怎么样? -
while 条件也会导致检查 num[i+1] 越界。对于 5 个元素的列表,while 循环将以 i == 5 执行,从而导致 if 检查 nums[6](超出范围)。
-
如果只有一些元素被欺骗,你会返回什么?
-
尝试用 print 替换 while 循环中的返回值。非常适合调试。
标签: python arrays duplicates