# Time: O(n), one pass using two pointers.
# Space: O(1), output array is not considered for space complexity.
class Solution:
def sortedSquares(self, nums: List[int]) -> List[int]:
n = len(nums)
res = [0] * n
l, r = 0, n - 1
while l <= r:
left, right = abs(nums[l]), abs(nums[r])
if left > right:
res[r - l] = left * left
l += 1
else:
res[r - l] = right * right
r -= 1
return res