题目
给你一个按 非递减顺序 排序的整数数组
nums
,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
解题
以下算法时间复杂度为
python">def sortedSquares(nums):n = len(nums)result = [0] * n # 创建一个结果数组,长度与 nums 相同left, right = 0, n - 1 # 初始化左右指针position = n - 1 # 初始化结果数组的插入位置while left <= right:left_square = nums[left] ** 2right_square = nums[right] ** 2if left_square > right_square:result[position] = left_squareleft += 1else:result[position] = right_squareright -= 1position -= 1return resultnums = [-4, -1, 0, 3, 10]
print(sortedSquares(nums)) # 输出: [0, 1, 9, 16, 100]nums = [-7, -3, 2, 3, 11]
print(sortedSquares(nums)) # 输出: [4, 9, 9, 49, 121]
[0, 1, 9, 16, 100]
[4, 9, 9, 49, 121]