问题描述:
给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
示例 1:
输入:[-4,-1,3,10]
输出:[0,1,9,16,100]
示例 2:
输入:[-7,-3,2,11]
输出:[4,49,121]
提示:
1 <= A.length <= 10000
-10000 <= A[i] <= 10000
A 已按非递减顺序排序。
class Solution: def sortedSquares(self,A: List[int]) -> List[int]: #左指针 left = 0 右指针 right = len(A)-1 用于存储结果 res = [0 for _ in range(len(A))] 从右至左遍历数组 for i in range(len(A)-1,-1): 计算左指针指向值得平方 l = A[left]*A[left] 计算右指针指向值得平方 r = A[right]*A[right] 如果l<=r if l <= r: 将res的第i位更新为r res[i] = r 因为是非递键排序的,所以剩下的值都会比该值小了,此时右指针减一 right -= 1 else: res[i] = l left += 1 return res
结果: