977 有序数组的平方

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

示例 1:

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

示例 2:

输入:[-7,-3,2,3,11]
输出:[4,9,9,49,121]

解法

  • Python
class Solution:
    def sortedSquares(self, A: List[int]) -> List[int]:
        # 方法一
        # for i in range(len(A)):
        #     A[i] = A[i]**2
        # return sorted(A)
        # 方法二
        ls = []
        left,right = 0,len(A)-1
        while left<=right:
            if A[left]**2 > A[right]**2:
                ls.append(A[left]**2)
                left += 1
            else:
                ls.append(A[right]**2)
                right -= 1
        return ls[::-1]
  • C++
class Solution {
public:
    vector<int> sortedSquares(vector<int>& A) {
        int len = A.size();
        vector<int> res(len);
        int left=0,right=len-1,ri=len-1;

        while(left<=right){
            int x = A[left]*A[left],y=A[right]*A[right];
            if (x<y){
                right --;
                res[ri] = y;
            }
            else{
                left ++;
                res[ri] = x;
            }
            ri --;
        }
        return res; 
    }
};