gpt4 book ai didi

python - 查找数组是否为排列的最佳方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:28:08 24 4
gpt4 key购买 nike

给出一个由N个整数组成的非空数组A

排列是一个序列,其中包含从 1 到 N 的每个元素恰好各一次。例如,[4,2,1,3]是一个排列,但是 [4,1,3]不是排列,因为缺少值 2

目标是检查输入数组 A 是否为排列。

约束

  • N为[1..100,000]范围内的整数;
  • A 的每个元素都是 [1..1,000,000,000] 范围内的整数。

我的代码:

# 1 = permutation 0 = not a permutation
def solution(A):
total = sum(A)

formula_total = (len(A)*(len(A)+1))/(2)

if total == formula_total:

return 1

return 0

我的解决方案在 Antisum 上失败了(我不知道那是什么)

最佳答案

然后您可以检查列表的最小值是否为 1,以及最大值是否等于列表的长度。然后,您可以将列表转换为集合以检查长度是否相等,如果相等,则列表中的所有项目都是唯一的,因此列表就是您认为的排列:

def solution(A):
return min(A) == 1 and max(A) == len(A) == len(set(A))

这样:

print(solution([4,2,1,3]))
print(solution([4,1,3]))
print(solution([4,2,1,4]))
print(solution([4,2,5,3]))

输出:

True
False
False
False

如果您希望将 10 作为返回值,您可以将 bool 值传递给 int() 构造函数:

def solution(A):
return int(min(A) == 1 and max(A) == len(A) == len(set(A)))

关于python - 查找数组是否为排列的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53640606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com