【力扣刷题】977.有序数组的平方-双指针

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

     

    示例 1:

    输入:nums = [-4,-1,0,3,10]
    输出:[0,1,9,16,100]
    解释:平方后,数组变为 [16,1,0,9,100]
    排序后,数组变为 [0,1,9,16,100]

    示例 2:

    输入:nums = [-7,-3,2,3,11]
    输出:[4,9,9,49,121]
    

     

    提示:

    • 1 <= nums.length <= 104
    • -104 <= nums[i] <= 104
    • nums 已按 非递减顺序 排序

     

    class Solution {
    public:
        vector<int> sortedSquares(vector<int>& nums) {
            int l=0,r=nums.size()-1,cnt=nums.size()-1;
            vector<int> a(nums.size(), 0);
            while(l<=r){
                if(nums[l]*nums[l]>nums[r]*nums[r]){
                    a[cnt--]=nums[l]*nums[l];
                    l++;
                }else{
                    a[cnt--]=nums[r]*nums[r];
                    r--;
                }
            }
            return a;
        }
    };
    
    

    版权声明:
    作者:Zhang, Hongxing
    链接:http://zhx.info/archives/341
    来源:张鸿兴的学习历程
    文章版权归作者所有,未经允许请勿转载。

    THE END
    分享
    二维码
    < <上一篇
    下一篇>>
    文章目录
    关闭
    目 录