wha*_*pin 0 python algorithm if-statement
所以我正在做一个名为“缺失数字”的练习,我不明白为什么这个语句会导致列表索引超出范围错误。
if nums[i] != nums[j] and nums[i] < len(nums):
Run Code Online (Sandbox Code Playgroud)
但是当我使用这种条件时,代码有效:
if nums[i] < len(nums) and nums[i] != nums[j]:
Run Code Online (Sandbox Code Playgroud)
这两行代码在功能上不是完全相同吗?我在想这可能是优先顺序问题,但即使我将其放在括号中,仍然存在超出范围的错误。
下面是完整的代码:
def missingNumber(self, nums: List[int]) -> int:
i, n = 0, len(nums)
while i < n:
j = nums[i]
if nums[i] != nums[j] and nums[i] < n:
nums[i], nums[j] = nums[j], nums[i]
else:
i += 1
for i in range(n):
if i != nums[i]:
return i
Run Code Online (Sandbox Code Playgroud)