有序数组的平方
题目 有序数组的平方
思路分析
结合快排的两端逼近和归并的合并排序思想
因为原数组的有序的
所以一个指针在左一个指针在右
把两数的绝对值进行比较(abs函数)
哪个更大就把它的平方放在答案数组的最右边
代码实现
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int n=nums.size();
vector<int> res(n);
int l=0,r=n-1,k=n-1;
while(k>=0)//没必要l<r 因为个数就那些 塞满了自然结束了
{
if(abs(nums[l])>=abs(nums[r]))
res[k--]=nums[l]*nums[l++];
else
res[k--]=nums[r]*nums[r--];
}
return res;
}
};
💬 评论