[英]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.