patternMinor
Can someone help me fully grasp idea and time/space complexity with this code?
Viewed 0 times
thiscanspaceideawithsomeonehelpgrasptimecode
Problem
My understanding is the following:
Time = With the initial not state is just to check if there are no elements in the list
b = [1, 2, 3] # input length will be size n
c = 4
def foo(a, b, c):
res = 0
if not a:
return res
x = []
for i, j in enumerate(b):
x.append((j, i))
for j, i in sorted(x, reverse=True):
if a[i]
Can someone help go over what the time and space complexity is plus the idea behind it mainly?
Time = With the initial not state is just to check if there are no elements in the list
a. This is done in O(1) time. The first loop enumerates the second list b with the operation append() which is done in O(1) time therefore the first loop is O(n). The second loop I am confused if the sorting plays a factor since I know the sort method is O(nlogn) time. Within the second loop I am a bit confused about the operations as far as what it is specifically doing which I wanted to ask about although I do understand the fact that if the i-th element in a is `a = [3, 1, 2] # input length will be size nb = [1, 2, 3] # input length will be size n
c = 4
def foo(a, b, c):
res = 0
if not a:
return res
x = []
for i, j in enumerate(b):
x.append((j, i))
for j, i in sorted(x, reverse=True):
if a[i]
Can someone help go over what the time and space complexity is plus the idea behind it mainly?
Solution
You are completely correct in your analysis.
Space. You construct an array $x$ which has length the same as that of $b$, which is $n$. It contains a pair for each element in $b$, so it has size $O(n)$. The other variables do not count, hence space complexity is indeed $O(n)$.
Time. You correctly observed that the sorting of $x$ takes time $O(n \log n)$, and that both iterations take time $O(n)$. Everything else is arithmetic operations, which all run in $O(1)$ time. Hence, something like $O(n) + O(n \log n) + O(n) + O(1)$, which all in all results in a time complexity of $O(n \log n)$.
Well done!
Space. You construct an array $x$ which has length the same as that of $b$, which is $n$. It contains a pair for each element in $b$, so it has size $O(n)$. The other variables do not count, hence space complexity is indeed $O(n)$.
Time. You correctly observed that the sorting of $x$ takes time $O(n \log n)$, and that both iterations take time $O(n)$. Everything else is arithmetic operations, which all run in $O(1)$ time. Hence, something like $O(n) + O(n \log n) + O(n) + O(1)$, which all in all results in a time complexity of $O(n \log n)$.
Well done!
Context
StackExchange Computer Science Q#136456, answer score: 2
Revisions (0)
No revisions yet.