一、题目
二、题解
双指针
左指针:从左往右遍历,划分有效值边界,此时有效值数组为 [0,left]
右指针:从右往左遍历,划分有效值边界,此时有效值数组为 [right,nums.size()-1]
三、代码
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int right = nums.size() - 1;
int left = 0;
vector<int> ans(nums.size());
int pos =nums.size() - 1;
while(left < right){
if(nums[left] * nums[left] > nums[right] * nums[right]){
ans[pos--] = nums[left] * nums[left];
left++;
}else{
ans[pos--] = nums[right] * nums[right];
right--;
}
}
ans[pos] = nums[left] * nums[left];
return ans;
}
};