题目链接977. 有序数组的平方 - 力扣(LeetCode)
用双指针的思想
因为绝对值大的数平方后更大,所以result数组的最大值在nums数组的最左段或最右端
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
vector<int>result(nums.size(), 0);
int index = nums.size() - 1;
for (int left = 0, right = nums.size() - 1; left <= right;) {
if (abs(nums[left]) < abs(nums[right])) {
result[index--] = nums[right] * nums[right];
right--;
}
else {
result[index--] = nums[left] * nums[left];
left++;
}
}
return result;
}
};
初学者,见解不足,如有错误请指出