题目链接
要求o(n)复杂度,考虑使用双指针法避免多次遍历
AC代码:
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
//双指针法
int left = 0, right = nums.size() - 1;
int idx = right;
vector<int> res(nums.size());
while(left<=right){
if(-1*nums[left]>nums[right]){
res[idx--] = nums[left] * nums[left];
left++;
}
else{
res[idx--] = nums[right] * nums[right];
right--;
}
}
return res;
}
};