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