leetcode_977.有序数组的平方和

一、题目

 

 

二、分析代码

    我的想法其实很直观,就是先求一下绝对值,然后排序,然后求平方

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        for( auto& i : nums){
            if(i < 0){
                i = -1*i;
            }
        }
        sort(nums.begin(), nums.end());
        //求平方
        for( auto& i : nums){
            i*=i;
        }
        return nums;
    }
};

   时间复杂度为O(2*n + n*log(n))

三、参考解法

  代码随想录解法

   其主要使用了双指针,确实比我的要好一点。

   

   

 

   代码如下:

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        for( auto& i : nums){
            if(i < 0){
                i = -1*i;
            }
        }
        sort(nums.begin(), nums.end());
        //求平方
        for( auto& i : nums){
            i*=i;
        }
        return nums;
    }
};

    时间复杂度为O(n)。但是我的空间复杂度比他的好。因为我没有使用额外的空间。其实这些都是小细节,真用的时候也不在乎空间了。

posted @ 2021-11-03 15:46  星光夜  阅读(45)  评论(0)    收藏  举报