代码随想录:有序数组的平方
仍然是双指针,一开始也想到了双指针,不过很笨的创造了两个数组,一个负数的一个正数的,两个数组比大小后插入。但其实可以直接把原数组平方后,从左右两边插入。
有两点值得注意:1.已知数组大小的情况下,可以直接倒着插入数组。2.创建vector时需要指定元素的个数。
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
vector<int>vec(nums.size());
int target = nums.size()-1;
//先直接平方,从左右两边找更大的那个,反向插入目标数组
for(int i=0;i<nums.size();i++){
nums[i]=nums[i]*nums[i];
}
for(int i=0, j=nums.size()-1;target>=0;){
if(nums[i]<nums[j]){
vec[target]=nums[j];
j--;
}
else{
vec[target]=nums[i];
i++;
}
target--;
}
return vec;
}
};
标签:平方,nums,随想录,插入,vector,数组
From: https://www.cnblogs.com/huigugu/p/18546792