题目链接
题目描述
解题思路
双指针思想:因为结果数组的最大值只可能在原数组开头或者末尾;依次进行头尾双指针遍历即可得到结果数组的非递减顺序;
实现代码:
class Solution {
public int[] sortedSquares(int[] nums) {
int n = nums.length;
int[] ans = new int[n];
for (int i = 0, j = n - 1, pos = n - 1; i <= j;) {
if (nums[i] * nums[i] > nums[j] * nums[j]) {
ans[pos] = nums[i] * nums[i];
++i;
} else {
ans[pos] = nums[j] * nums[j];
--j;
}
--pos;
}
return ans;
}
}