题目:977. 有序数组的平方 - 力扣(LeetCode)
思路:同样是用双指针,一个指向开头,一个指向末尾,因为大的一定在两端,相乘比较大小,指针逐渐挪动
图示:
代码:
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int a = nums.size()-1;int b = 0;
int c = nums.size()-1;
vector<int> arr(nums.size() , 0);
while( b <= a )
{
if(nums[b]*nums[b] > nums[a]*nums[a])
{
arr[c--] = nums[b]*nums[b];
b ++;
}
else
{
arr[c--] = nums[a]*nums[a];
a--;
}
}
return arr;
}
};
结果: