1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26class Solution: def sortedSquares(self, A: List[int]) -> List[int]: N = len(A) # i, j: negative, positive parts j = 0 while j < N and A[j] < 0: j += 1 i = j - 1 ans = [] while 0 <= i and j < N: if A[i]**2 < A[j]**2: ans.append(A[i]**2) i -= 1 else: ans.append(A[j]**2) j += 1 # adding any leftovers from the positive or negative side while i >= 0: ans.append(A[i]**2) i -= 1 while j < N: ans.append(A[j]**2) j += 1 return ans