Given an integer array nums sorted in non-decreasing order, return an array of the squares of each number sorted in non-decreasing order.
Input: nums = [-4,-1,0,3,10]
Output: [0,1,9,16,100]
Explanation: After squaring, the array becomes [16,1,0,9,100].
After sorting, it becomes [0,1,9,16,100].
Input: nums = [-7,-3,2,3,11]
Output: [4,9,9,49,121]
Follow up: Squaring each element and sorting the new array is very trivial, could you find an O(n) solution using a different approach?
class Solution:
def sortedSquares(self, nums: List[int]) -> List[int]:
for i in range(len(nums)):
nums[i] = abs( nums[i] **2 )
nums.sort()
return nums
class Solution:
def sortedSquares(self, nums: List[int]) -> List[int]:
result = [0] * len(nums)
writePointer = len(nums) - 1
left = 0
right = len(nums) - 1
while left <= right:
if nums[left] * nums[left] > nums[right] * nums[right]:
result[writePointer] = nums[left]*nums[left]
left +=1
else:
result[writePointer] = nums[right]*nums[right]
right -=1
writePointer -=1
return result

