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;
    }
};

 

posted @ 2019-08-04 15:52  有梦就要去实现他  阅读(163)  评论(0编辑  收藏  举报