题目
给你一个按 非递减顺序 排序的整数数组
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] ** 2
right_square = nums[right] ** 2
if left_square > right_square:
result[position] = left_square
left += 1
else:
result[position] = right_square
right -= 1
position -= 1
return result
nums = [-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]