CSES问题中的运行时错误集缺少编号

Xyp9x

问题:

除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

我怎样才能解决这个问题?

Divyansh Chaudhary

您可能要尝试:

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章