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)。但是我的空间复杂度比他的好。因为我没有使用额外的空间。其实这些都是小细节,真用的时候也不在乎空间了。
纵一苇之所如,临万顷之茫然。

浙公网安备 33010602011771号