给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
示例 1:
- 输入:nums = [-4,-1,0,3,10]
- 输出:[0,1,9,16,100]
- 解释:平方后,数组变为 [16,1,0,9,100],排序后,数组变为 [0,1,9,16,100]
示例 2:
- 输入:nums = [-7,-3,2,3,11]
- 输出:[4,9,9,49,121]
我写的算法:双指针
思路:左右两边其中一个肯定是最大的那一个,大的那一个放入数组,小的那个进入下一轮比较
/**
* @param {number[]} nums
* @return {number[]}
*/
var sortedSquares = function(nums) {
let newNums=[];
let left=0,right=nums.length-1;//左右指针
while(left<=right){
if(nums[left]**2>nums[right]**2){
newNums.push(nums[left]**2)
left++;
}else{
newNums.push(nums[right]**2)
right--;
}
}
return newNums.reverse()
};