uacs2024

导航

leetcode977-有序数组的平方

977. 有序数组的平方

原本直接暴力的做法没有利用到原数组是有序这个条件。这里直接把左边的绝对值大于右边的直接放到最后面,这样就减少很多不必要的操作。

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        int size=nums.size(),left=0,right=size-1,pos=size-1;
        vector<int> res(size);
        while(left<=right)
        {
            if(-nums[left]>nums[right])  //根本不需要担心nums[i]变成正数的情况,因为正数也依然是-nums[left]<=nums[right]
            {
                res[pos--]=nums[left]*nums[left];
                left++;
            }
            else
            {
                res[pos--]=nums[right]*nums[right];
                right--;
            }
        }
        return res;
        /*int size=nums.size();
        for(int i=0;i<size;i++)
        {
            nums[i]*=nums[i];
        }
        sort(nums.begin(),nums.end());
        return nums;*/       
    }
};

 

posted on 2022-09-28 17:10  ᶜʸᵃⁿ  阅读(13)  评论(0编辑  收藏  举报