在这样的问题上有什么帮助吗??
你是这个意思吗?
def check_elements(arr):
return len(arr) == len(set(arr))
UPD我想我明白了。给定一个长度恒定的列表(例如 50(。我们需要将这种情况添加到解决问题中,以解决这个问题需要O(n(时间。我想不喜欢 O(n( 虚拟操作,而是有点合理的 O(n(。
井。。。看到我们可以在哪里得到O(n(的唯一方法是元素本身。假设我们有这样的东西:
[
1.1111111111111111..<O(n) digits>..1,
1.1111111111111111..<O(n) digits>..2,
1.1111111111111111..<O(n) digits>..3,
1.1111111111111111..<O(n) digits>..1,
]
基本上我们可以将元素视为非常长的字符串。要检查常数的 n 个字符的字符串是否唯一,我们至少必须读取它们。而且至少是O(n(时间。
你可以只使用计数排序,在你的例子中,它将在 O(n( 中。创建一个从 0 到 N 的数组(N 是最大值(,然后如果原始数组中有值 v,则在结果数组的第 value 条目中添加 1。这将带您 O(n((只需查看原始数组中的所有值(,然后只需在结果数组中搜索是否有大于 1 的条目...