I am trying to find a pair (x,y) in A such that x-y = 0 (mod n)
Below is the script I have written.
What would be the run time complexity if n is a constant? --> So, this is asked but isn't n a constant anyway? I am a bit confused, the question says "inputs are a positive 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)
CodePudding user response:
Short answer
- "What is the run time complexity in terms of
n
andm
?". The correct answer isO(n)
. - "What would be the run time complexity if
n
is a constant?". The correct answer isO(1)
.
Explanation
- When you iterate over your loop, you can't do more than
n 1
iterations, because there are onlyn
different remainders when divided byn
. So you definitely find the answer inn 1
or fewer iterations. - If
n
is constant, you are still needn 1
or fewer iterations to find the answer, so you need a constant time to solve your problem.