977数组-有序数组的平方

Posted 孤注一掷 、

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了977数组-有序数组的平方相关的知识,希望对你有一定的参考价值。

题目

 链接:977. 有序数组的平方 - 力扣(LeetCode)

思路

可以考虑先平方后快速排序

代码:

class Solution 
public:
    vector<int> sortedSquares(vector<int>& nums) 
        //先平方
        for(int i = 0; i < nums.size(); i++)
            nums[i] = nums[i]*nums[i];
        
        //然后快速排序
        sort(nums.begin(), nums.end());
        return nums;
    
;

也可以用双指针法

class Solution 
public:
    vector<int> sortedSquares(vector<int>& nums) 
        //双指针法,数组平方的最大值就在数组两端,最左边或最右边
        //i指向起始,j指向终止位置
        //新建一个和nums大小一样的数组,k指向新数组的终止位置
        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];
                k--;
                j--;
            else 
                result[k] = nums[i]*nums[i];
                k--;
                i++;
            
        
        return result;
    
;

以上是关于977数组-有序数组的平方的主要内容,如果未能解决你的问题,请参考以下文章

文巾解题 977. 有序数组的平方

数组977. 有序数组的平方

LeetCode 977. 有序数组的平方

977. 有序数组的平方-双指针

977. 有序数组的平方

Leetcode刷题100天—977. 有序数组的平方(双指针)—day20