一、有序数组的进阶
方法三:双指针法
利用双指针,left和right从数组两端向中间遍历,每次将对应元素平方后比较大的值逆序存放在数组中
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int n = nums.size();
vector<int> ans(n);//初始化一个大小为n的数组
for (int left = 0, right = n - 1, pos = n - 1; left <= right;) {
if (nums[left] * nums[left] > nums[right] * nums[right]) {
ans[pos] = nums[left] * nums[left];
++left;
}
else {
ans[pos] = nums[right] * nums[right];
--right;
}
--pos;
}
return ans;
}
};
补充:C++ vector的一些常用方法C++ vector的用法(整理)_wkq0825的专栏-CSDN博客)