1

If a is a List[List[int]] representing a n✕n matrix, what is the time- and space-complexity of a = zip(*a[::-1])?

My thoughts

  • Time-complexity has to be at least O(n^2) because we touch n^2 elements. I guess that every element is touched exactly twice (reversing/flipping with a[::-1] and transposing with zip(*reversed))
  • list(zip(*a[::-1])) returns a copy, so the space-complexity would be at least n^2. But zip returns an iterator, hence I'm not sure.
  • I'm especially uncertain about the space complexity, because I read that zip(*inner) unpacks the inner iterables (source). My guess is that it stores additionally to the input O(n) for keeping pointers for the n inner "unpacked" iterators. But I'm very uncertain about that.
Martin Thoma
  • 124,992
  • 159
  • 614
  • 958

0 Answers0