题目链接:977.有序数组的平方
思路
双指针法
结果数组res的末尾元素必然来自nums数组的头部或尾部(绝对值最大)
依次比较这两个平方的大小,并填入res的末尾即可
代码
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int l = 0;
int r = nums.size()-1;
int k = r;
vector<int> res(nums.size(), 0);
while (l <= r) {
if (nums[l]*nums[l] <= nums[r]*nums[r]) {
res[k--] = nums[r]*nums[r];
r--;
}
else {
res[k--] = nums[l]*nums[l];
l++;
}
}
return res;
}
};