天津网站优化,微信小程序制作网站,哪个网站衬衣做的好,网站怎样做支付接口给你一个按 非递减顺序 排序的整数数组 nums#xff0c;返回 每个数字的平方 组成的新数组#xff0c;要求也按 非递减顺序 排序。
示例 1#xff1a; 输入#xff1a;nums [-4,-1,0,3,10] 输出#xff1a;[0,1,9,16,100] 解释#xff1a;平方后#xff0c;数组变为 […给你一个按 非递减顺序 排序的整数数组 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] 思路不论数组中有正有负、全正还是全负取平方后最大的数值必定在两端中。那么双指针指向首尾倒序遍历result数组并判断双指针数值大小移动指针即可。
解答
class Solution {public int[] sortedSquares(int[] nums) {int[] result new int[nums.length];int startIndex 0, endIndex nums.length - 1;for (int i nums.length - 1; i 0; i--) {int startNum Math.abs(nums[startIndex]);int endNum Math.abs(nums[endIndex]);if (startNum endNum) {result[i] endNum * endNum;endIndex--;} else {result[i] startNum * startNum;startIndex;}}return result;}
}