文章目录
977. 有序数组的平方
思路–双指针
由于该数组有负数,且又是升序;
所以说:平方后最大值,肯定在数组前面或者数组后面的值;
所以我们只要定义两个指针分别指向头和尾;
求他们的平方和,再比较,较大的放入新数组的结尾;
这样就可以完成平方后的数组也是有序的;
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
//初始化nums的头尾指针
int begin = 0;
int end = nums.size() -1;
//开辟一个存放结果的数组,把结果从数组的后面往前放
vector<int> result(nums.size(),0);
int last = result.size()-1;
while(begin <= end){
if(nums[begin]*nums[begin] < nums[end]*nums[end]){
result[last--] = nums[end]*nums[end];
end--;
}
else{
result[last--] = nums[begin]*nums[begin];
begin++;
}
}
return result;
}
};