leetcode 977. Squares of a Sorted Array

977. Squares of a Sorted Array

因为A是一个排序数组,且可能存在正负,那么平方最大的数一定在两头。所以使用双指针,同时申请一个数组,从数组的后往前排,每次排的数是两个指针中绝对值较大的那个数。

双指针,时间复杂度是O(n)

class Solution {
public:
    vector<int> sortedSquares(vector<int>& A) {
        vector<int> res(A.size());
        int start = 0,end = A.size() - 1;
        int i = A.size() - 1;
        while(i >= 0){
            if(abs(A[start]) > abs(A[end]))
                res[i--] = pow(A[start++],2);
            else
                res[i--] = pow(A[end--],2);
        }
        return res;
    }
};
原文地址:https://www.cnblogs.com/ymjyqsx/p/11298466.html