LeetCode-977-有序数组的平方

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


image.png

解题思路:

  1. 暴力法:遍历开平方,再排序;
  2. 双指针,因为输入A为从小到大排序的,从列表两边开始开方比较,取对比后的较大值,存入ans的末位,以此类推。

Python3代码:

class Solution:
    def sortedSquares(self, A: List[int]) -> List[int]:
        # ans = [0 for _ in A]
        # for i in range(len(A)):
        #     ans[i] = A[i]**2
        
        # return sorted(ans)
        n = len(A)
        i, j, pos = 0, n-1, n-1
        ans = [0]*n
        while i <= j:
            if A[i]**2 > A[j]**2:
                ans[pos] = (A[i]**2)
                i += 1
                pos-=1
            else:
                ans[pos] = (A[j]**2)
                j -= 1
                pos-=1
        return ans

你可能感兴趣的:(LeetCode-977-有序数组的平方)