Skip to content

977 Squares of a Sorted Array

Approach 1 Two Pointers

class Solution:
    def sortedSquares(self, nums: List[int]) -> List[int]:
        lo,hi = 0,len(nums)-1

        res = []
        while lo <= hi:
            if abs(nums[hi]) > abs(nums[lo]):
                res.append(nums[hi]*nums[hi])
                hi -= 1
            elif abs(nums[hi]) < abs(nums[lo]):
                res.append(nums[lo]*nums[lo])
                lo += 1
            else:
                # lo == hi, 只加一次
                res.append(nums[hi]*nums[hi])
                if lo != hi:
                    # lo != hi,再加一次
                    res.append(nums[hi]*nums[hi])

                hi -= 1
                lo += 1

        return res[::-1]