Leetcode977SquareanOrderedArray题目给你一个非降序排列的整型数组nums,返回一个由每个数的平方组成的新数组,同样需要beinnon-decreasingorder按顺序排序。答案/**\*@param{number[]}nums\*@return{number[]}*/varsortedSquares=function(nums){letleft=0letright=nums.length-1letres=[]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--}}returnres.reverse()};解题思路:我们中学都学过曲线,大家应该都知道x的平方的曲线长什么样子。对于这道题,我们可以计算出对应数的平方,然后插入到数组中。如果左边的方块大,则左边+1;如果右边的方块很大就用右边的-1这样我们就可以知道所有的数都是平方的,然后把整个数组翻转过来就行了。至于为什么不直接取消?毕竟unshift方法是通过在前面插入一个队列来操作数组的,这样后面的元素都得一个一个往后移。还不如push操作,直接放在最后面,省得每个元素都搬回来。有兴趣的可以试试两者的区别。
