有序数组的平方

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

  • 输入:nums = [-4,-1,0,3,10]
  • 输出:[0,1,9,16,100]
  • 解释:平方后,数组变为 [16,1,0,9,100]
  • 排序后,数组变为 [0,1,9,16,100]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 利用双指针法,比较数组头尾元素,大的插入,小的进行下一次比较,直到遍历结束。
let sortedSquares = function(nums) {
let start = 0;
let end = nums.length - 1;
let i = nums.length - 1;
let res = [...nums];
for (; i >= 0; i--) {
if (nums[start] * nums[start] >= nums[end] * nums[end]) {
res[i] = nums[start] * nums[start];
start++;
} else {
res[i] = nums[end] * nums[end];
end--;
}
}
return res;

};