class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int n = nums.size();
vector<int> newVec(n);
int left = 0, right = n - 1;
int res = n - 1;
while(left <= right){
if(nums[left] * nums[left] < nums[right] * nums[right]){
newVec[res--] = nums[right] * nums[right];
--right;
}else{
newVec[res--] = nums[left] * nums[left];
++left;
}
}
return newVec;
}
};
代码(二刷自解 2024年4月15日 4min)
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
// 双指针往中间
int n = nums.size();
vector<int> res(n);
int left = 0;
int right = n - 1;
int index = n - 1;
while (left <= right) {
if (pow(nums[left], 2) > pow(nums[right], 2)) {
res[index--] = nums[left] * nums[left];
left++;
} else {
res[index--] = nums[right] * nums[right];
right--;
}
}
return res;
}
};