代码随想录:有序数组的平方

代码随想录:有序数组的平方

仍然是双指针,一开始也想到了双指针,不过很笨的创造了两个数组,一个负数的一个正数的,两个数组比大小后插入。但其实可以直接把原数组平方后,从左右两边插入。

有两点值得注意: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;
    }
};
posted @ 2024-11-14 21:02  huigugu  阅读(6)  评论(0)    收藏  举报