Leetcode977有序數(shù)組的平方
題目
給你一個(gè)按 非遞減順序 排序的整數(shù)數(shù)組 nums
黎侈,返回 每個(gè)數(shù)字的平方 組成的新數(shù)組,要求也按 非遞減順序 排序峻汉。
答題
/**
\* @param {number[]} nums
\* @return {number[]}
*/
var sortedSquares = function(nums) {
let left = 0
let right = nums.length -1
let res = []
while(left <= right){
if(nums[left]*nums[left] >= nums[right]*nums[right]){
res.push(nums[left]*nums[left])
left++
}else{
res.push(nums[right]*nums[right])
right--
}
}
return res.reverse()
};
解題思路:
我們中學(xué)的時(shí)候都有學(xué)到曲線休吠,大家應(yīng)該都知道x的平方這條曲線怎么個(gè)走勢(shì)吧,對(duì)于這道題而言阳懂,我們可以計(jì)算出對(duì)應(yīng)數(shù)字的平方柜思,然后把它插入到數(shù)組中,如果左邊的平方大就左邊+1如果右邊的平方大就右邊-1這樣我們可以知道所有的數(shù)全都求一個(gè)平方誊辉,再把整個(gè)數(shù)組翻轉(zhuǎn)過(guò)來(lái)就好了亡脑。
至于為什么不直接unshift呢?畢竟unshift方法操作數(shù)組是在最前面插個(gè)隊(duì)蛙紫,這樣后面所有的都得往后挪一個(gè)途戒,不如push操作,直接放在最后面喷斋,省得每個(gè)元素后移了星爪。
有感興趣的可以試試兩者之間的差別哈。