题目链接:
思路1:暴力排序
此时时间复杂度为O(n+logn) ,一个遍历,一个排序。
思路2:双指针法
此时时间复杂度为O(n)
代码如下:
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int k=nums.size()-1;
vector<int>result(nums.size(),0);
for(int i=0,j=nums.size()-1;i<=j;)
{
if(nums[i]*nums[i]<nums[j]*nums[j])
{
result[k--]=nums[j]*nums[j];
j--;
}
else
{
result[k--]=nums[i]*nums[i];
i++;
}
}
return result;
}
};