977.有序数组的平方
方法一:暴力法
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {// 暴力法for(int i = 0; i < nums.size(); i++){nums[i] *= nums[i];}sort(nums.begin(), nums.end());return nums;}
};
方法二:双指针法
这个思路就是双指针,从最右边向最左边依次放入元素的平方,需要在每个元素平方后进行比较大小
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int k = nums.size() - 1;vector<int> result(nums.size(), 0);for (int i = 0, j = nums.size() - 1; i <= j;) { // 注意这里要i <= j,因为最后要处理两个元素if (nums[i] * nums[i] < nums[j] * nums[j]) {result[k--] = nums[j] * nums[j];j--;}else {result[k--] = nums[i] * nums[i];i++;}}return result;}
};