【python-leetcode977-双指针】有序数组的平方

时间:2022-07-23
本文章向大家介绍【python-leetcode977-双指针】有序数组的平方,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

问题描述:

给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。

示例 1:

输入:[-4,-1,0,3,10] 输出:[0,1,9,16,100] 示例 2:

输入:[-7,-3,2,3,11] 输出:[4,9,9,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,-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

结果: