有序数组的平方

题目 有序数组的平方

image-0bf360c0

思路分析

结合快排的两端逼近和归并的合并排序思想

image-febad0ff

因为原数组的有序的

所以一个指针在左一个指针在右

把两数的绝对值进行比较(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;

    }

};

同类题型

视频讲解


⬅️ 接雨水 🏠 00-刷题理模型 ➡️ 有效三角形的个数