簡體   English   中英

腳本的復雜性(找到一對具有相同余數的整數)

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

簡短的回答

  1. “就nm而言,運行時間復雜度是多少?”。 正確答案是O(n)
  2. “如果n是常數,運行時間復雜度是多少?”。 正確答案是O(1)

解釋

  1. 當你迭代你的循環時,你不能做超過n + 1次迭代,因為除以n時只有n不同的余數。 所以你肯定會在n + 1次或更少的迭代中找到答案。
  2. 如果n是常數,你仍然需要n + 1次或更少的迭代來找到答案,所以你需要一個常數時間來解決你的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM