977. 有序数组的平方
法一:用函数sort来写
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
for(auto &i:nums)i*=i;
sort(nums.begin(),nums.end());
return nums;
}
};
法二:双指针
因为原数组有序,所以我们用双指针遍历两边,把大的平方放入答案里面即可
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int n = nums.size();
vector<int> ant(n);
for (int i = 0, j = n - 1, k = n - 1; i <= j; k--) {
if (nums[i] * nums[i] > nums[j] * nums[j]) {
ant[k] = nums[i] * nums[i];
i++;
} else {
ant[k] = nums[j] * nums[j];
j--;
}
}
return ant;
}
};