给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]
方法一:遍历后排序
var sortedSquares = function (nums) {for (let i = 0; i < nums.length; i++) {nums[i] = Math.pow(nums[i], 2)}return nums.sort((a, b) => a - b)};
方法二:双指针法
通过前后两个指针判断绝对值最大值,然后注入新数组的最后面
var sortedSquares = function (nums) {let i = 0; // 左指针let j = nums.length-1; // 右指针let index = nums.length-1; // 新数组的序列let arr = [] // 新数组while(index>=0){if(Math.abs(nums[i])>Math.abs(nums[j])){arr[index] = nums[i]*nums[i]i++}else{arr[index] = nums[j]*nums[j]j--}index--}return arr};
