个人解题思路:将一个数组里面的数据完成平方,再一个个插入新数组,在插入的过程中做一个有序排序。但实际操作的时候卡在了第二步,如何将新数组有序排序呢??
经借鉴他人解题方法,才恍然大悟,需要采用 “双指针” 思想,先比较指针所指向的数据的绝对值(Math.abs方法)进行比较,将大的数值平方后插入新数组的头部(unshift方法)。
期间,指针移动(移动规律:若是尾指针的值插入到新数组,尾指针需向前移动;若是头指针的值插入到新数组,则头指针需向后移动),直至旧数组的值全部插入新数组完成。
var sortedSquares = function(nums) {
let newNums = []
for(let i = 0, j = nums.length-1; i <= j;){
left = Math.abs(nums[i])
right = Math.abs(nums[j])
if(right > left){
newNums.unshift(right*right)
j--
}else{
newNums.unshift(left*left)
i++
}
}
return newNums
};