gpt4 book ai didi

python - 检查列表是否具有完全重复的元素(即没有唯一元素)

转载 作者:太空宇宙 更新时间:2023-11-03 13:54:30 25 4
gpt4 key购买 nike

我有一个包含偶数个 int 的数组,我想检查所有这些元素是否“配对”,即 [0, 1, 0, 1] 有一对 1 和一对 0 vs [0, 1, 1, 2] 只有一个 0 和一个 2

我的第一个想法是将其转换为一个集合并检查该集合的长度是否为原始长度的一半:

def isPaired(arr):
return len(arr) / 2 == len(set(arr)

但如果 arr 是 [0, 1, 0, 0],那是不正确的。

我的下一个想法是对数组进行排序,并将每个偶数索引与下一个索引进行比较:

def isPaired(arr):
arr.sort
for i in range(0, len(arr) - 1):
if i % 2 == 0 && arr[i] != arr[i+1]:
return False
return True

这可行,但运行时至少是排序的运行时。有没有不对数组排序的解决方案?

最佳答案

您可以像这样使用Counter:

from collections import Counter
all(c % 2 == 0 for c in Counter([0, 1, 0, 1]).values())
# True

您还可以排序然后比较连续的元素:

l = sorted([0, 1, 0, 1])
all(x == y for x, y in zip(l[::2], l[1::2]))
# True

复杂性方面,更喜欢第一个选项,因为它的最坏情况复杂性只是线性的。

关于python - 检查列表是否具有完全重复的元素(即没有唯一元素),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58568461/

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