题目描述
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
举例
示例 1: 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100],排序后,数组变为 [0,1,9,16,100]
示例 2: 输入:nums = [-7,-3,2,3,11] 输出:[4,9,9,49,121]
代码(Python)
def sort_squares(nums):
n = len(nums)
left, right, k = 0, n - 1, n - 1
results = [-1] * n
while k >= 0:
ll = nums[left] ** 2
rr = nums[right] ** 2
if ll <= rr:
results[k] = rr
right -= 1
else:
results[k] = ll
left += 1
k -= 1
return results
if __name__ == "__main__":
nums = [-4,-1,0,3,10]
results = sort_squares(nums)
print(results)