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

有序数组的平方 – 双指针

本题是双指针法的又一次练习。

1. 暴力求解 – O(nlogn)

首先对所有元素进行原地平方计算,之后利用快排进行排序。

2. 双指针法 – O(n)
977有序数组的平方 --双指针_第1张图片
 vector<int> sortedSquares(vector<int>& nums) {
     vector<int> vec(nums.size(), 0);  // 新建数组保存结果
     int left = 0, right = nums.size() - 1;  // 双指针
     // 因为结果数组是非递减序,故判断出最大元素的放在数组的后面
     for(int j = vec.size() - 1; j >= 0; j--){  
         if(pow(nums[left], 2) > pow(nums[right], 2))
             vec[j] = pow(nums[left++], 2);
         else
             vec[j] = pow(nums[right--], 2);
     }
     return vec;
 }

你可能感兴趣的:(算法,算法,数据结构,c++)