一、题目内容 简单
给你一个按 非递减顺序 排序的整数数组 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]
提示:
- 1 <= nums.length <= 104
 - -104 <= nums[i] <= 104
 - nums 已按 非递减顺序 排序
二、解题思路
1. 暴力解法
逐个计算,然后排序2. 双指针
由于数组是排序过的,以非递减的形式。
那么从最左边 和 最右边两个开始比对,慢慢往中间移动三、具体代码
/*** @param {number[]} nums* @return {number[]}*/var sortedSquares = function (nums) {// nums 是非递减的,题目的意思其实是递增的意思const result = []for (let left = 0, right = nums.length - 1; left <= right;) {const leftSquare = nums[left] * nums[left]const rightSquare = nums[right] * nums[right]if (leftSquare > rightSquare) {result.unshift(leftSquare)left++} else {result.unshift(rightSquare)right--}}return result};
四、其他解法
 
