# Given an array of sorted integers, return an array of the squares of each number in sorted order.
# Input: [-2, 1, 2, 3]
# Output: [1, 4, 4, 9]

#Two pointers, Time O(n), Space O(n), n is array length
def sortSquares(a) :
    n = len(a)
    res = [None]* n
    i = 0
    j = n - 1
    for k in range (n-1, -1, -1) :
        if abs(a[i]) > abs(a[j]):
            res[k] = a[i] * a[i]
            i+=1
        else :
            res[k] = a[j] * a[j]
            j-=1
    return res

a = [-2, 1, 2, 3]
b = sortSquares(a)
print(b)