Leetcode 977: Squares of a Sorted Array

A two-pointer inward traversal approach to square each number and sort the array in O(n) time

Original problem is here.

Inward Traversal Two-Pointer Approach

Intuition

Pre-sorting gives us:

Algorithm

Initialization

Main Loop

Termination

My Solution

class Solution:
    def sortedSquares(self, nums: List[int]) -> List[int]:
        n  = len(nums)
        result = [0]*n
        left = 0
        right = n-1
        while left <= right:
            sq_left = nums[left]**2
            sq_right = nums[right]**2
            index_result = right-left
            if sq_left < sq_right:
                result[index_result] = sq_right
                right -=1
            else:
                result[index_result] = sq_left
                left += 1
        return result

Complexity Analysis

References