问题:
除1之外,所有的数字都在1,2,…,n之间。您的任务是找到丢失的号码。第一输入行包含整数n。第二行包含n-1个数字。每个数字都是不同的,且介于1和n(含)之间。打印缺少的号码。约束2≤n≤2⋅105示例输入:5 2 3 1 5输出:4
这是我尝试过的代码:
n=int(input())
arr = list(map(int,input().strip().split()))[:n-1]
arr.sort(reverse=True)
for i in range(n-1):
if(arr[i]-arr[i+1]>1):
print(arr[i]-1)
break
我也尝试过这个:
n=int(input())
arr = list(map(int,input().strip().split()))[:n-1]
arr.sort(reverse=True)
for i in range(n-1):
if n-1==1 and arr[0]==1:
print(2)
break
elif n-1==1 and arr[0]==2:
print(1)
break
elif i==n-1:
print(arr[i]-1)
break
elif arr[i]-arr[i+1]>1:
print(arr[i]-1)
break
在一些测试案例中,我遇到了运行时错误:
Error:
Traceback (most recent call last):
File "input/code.py", line 14, in <module>
elif arr[i]-arr[i+1]>1:
IndexError: list index out of range
我怎样才能解决这个问题?
您可能要尝试:
n=int(input())
arr = list(map(int,input().strip().split()))[:n-1]
arr.sort(reverse=True)
for i in range(n-1):
if n-1==1 and arr[0]==1:
print(2)
break
elif n-1==1 and arr[0]==2:
print(1)
break
elif i==n-2:
print(arr[0]+1)
break
elif arr[i]-arr[i+1]>1:
print(arr[i]-1)
break
这将消除您的错误list index out of range
。此外,解决此问题的更快方法可以是:
n = int(input())
print(n * (n + 1) // 2 - sum(map(int, input().split())))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句