s1-数组-7

103 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情

#1题目

image.png

#2解析

这里我们的处理方式是使用双指针来进行解决 我们重新定义一个结果数组k来储存结果,然后再设定i,j两个指针分别指向原数组的开头以及结尾然后这样遍历下去

image.png 每次开始就先i,j俩指针比较,然后把较大的放入结果数组,然后结果数组游标--,相应的i++或者j--;

#3上代码

class Solution
{
public:
    vector<int> sortedSquares(vector<int> &nums)
    {
        //使用双指针的方法来进行解决
        int k = nums.size() - 1;
        vector<int> result(nums.size(), 0);
        for (int i = 0,j = nums.size() - 1; i <= j;) //这里还是要注意<=的细节
        {
            if (nums[i]*nums[i] < nums[j]*nums[j])
            {
                result[k--] = nums[j]*nums[j];
                /* code */
                j--;
            }
            else
            {
                result[k--] = nums[i]*nums[i];
                i++;
            }
        }
        return result;
    }
};