【发布时间】:2013-03-25 13:55:12
【问题描述】:
伙计们。
我有一个时间很好的算法,我应该改变它以获得更好的时间,但我不知道。
你能帮帮我吗?
时间到了:
- 真正的 0m0.164s
- 用户 0m0.021s
- 系统 0m0.010s
这是算法:
def algo2(A, B):
x=0
y=0
for a in A:
m=0
for b in B:
if a == b:
m += 1
if m>y:
x = a
y = m
return x;
这是算法的数组:
A = [1,2,3,4,5,6,7,8,9,0]
B = [1,2,3,4,5,6,4,7,8,9,0]
【问题讨论】:
-
数组中的值是否有界限?数组总是排序的吗?
-
算法是做什么的?
-
我猜 A 中的元素是唯一的,但 B 中不是。你想找到 A 中最常出现在 B 中的元素。其中 n 是 A 中的元素数,m 是元素数在 B 中,您的算法在 O(nm) 中。获得更好大 O 的一种方法是对 A 和 B 进行排序,然后线性浏览 A 和 B,得到 O(n.log n + m.log m + n + m)
-
无边界,未排序。
-
谢谢你,克瓦里兹!很好的解释:)
标签: arrays algorithm python-3.x