双指针法
int square(int num)
{
return num*num;
}
vector<int> sortedSquares(vector<int>& nums)
{
vector<int> ret;
int leftIndex = 0;
int rightIndex = nums.size()-1;
while(leftIndex<=rightIndex){ // 为什么要==
if (square(nums[leftIndex])>=square(nums[rightIndex])){
ret.push_back(square(nums[leftIndex]));
leftIndex++;
}else{
ret.push_back(square(nums[rightIndex]));
rightIndex--;
}
}
std::reverse(ret.begin(),ret.end());
return ret;
}