【发布时间】:2017-08-14 17:59:37
【问题描述】:
我有一个 Google foobar 挑战:
编写一个名为 answer(data, n) 的函数,它接收一个少于 100 个整数和一个数字 n 的列表,并返回相同的列表,但将所有出现超过 n 次的数字完全删除。返回的列表应保持与原始列表相同的顺序 - 您不想混淆那些精心计划的轮班轮换!例如,如果 data 是 [5, 10, 15, 10, 7] 并且 n 是 1,则 answer(data, n) 将返回列表 [5, 15, 7] 因为 10 出现了两次,因此从完整列出。
这就是我的回答:
def answer(data=[], n=0):
for id in data:
num = data.count(id)
if num > n:
for i in data:
if i == id:
data.remove (id)
else:
continue
else:
continue
return data
但它没有通过测试。
【问题讨论】:
-
不清楚你的问题是什么,实际上这里没有问题,只是你的解决方案。您可以更新它以包含它吗?
-
您的算法具有
O(N^3)复杂度。这对于像 Google FooBar 这样的编程挑战来说是可怕的,大数据输入的测试可能会超时。试试别的,这可以在O(N^2)(也许O(N)?)。
标签: python python-2.7 list