![](/img/trans.png)
[英]Efficiency of the script (finding a pair of integers which have the same remainder)
[英]Complexity of the script (finding a pair of integers which have the same remainder in modulo)
我试图在 A 中找到一对 (x,y),使得 xy = 0 (mod n),其中输入为正 integer n,一组由 m 个非负整数和 m > n 组成的 A。 为了运行下面的代码,我拿了一个 m 和 n 只是为了运行一个例子。
下面是我写的脚本。
就 n 和 m 而言,运行时间复杂度是多少? --> 会是 O(N) 吗? 主循环与 A 的长度一样多,长度为 m。 我想问题是要我讨论m 和 n ,但我不确定关于 n 有什么要说的?
如果 n 是常数,运行时间复杂度是多少? --> 所以,这被问到了,但不是一直不变吗? 我有点困惑,问题是“输入是正的 integer n...”
def find_equal_pair_mod_n(n, A):
assert len(A) > n
X = [-1] * n
print(X)
for i in range(len(A)-1,-1,-1) : #loop backwards
print(i)
a = A[i]
print(a)
print(len(A))
A.pop(i)
r = a % n
if X[r] == -1:
X[r] = a
else:
return(X[r], a)
n
和m
而言,运行时间复杂度是多少?”。 正确答案是O(n)
。n
是常数,运行时间复杂度是多少?”。 正确答案是O(1)
。n + 1
次迭代,因为除以n
时只有n
不同的余数。 所以你肯定会在n + 1
次或更少的迭代中找到答案。n
是常数,你仍然需要n + 1
次或更少的迭代来找到答案,所以你需要一个常数时间来解决你的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.