题目描述:
给定一个按非递减顺序排序的整数数组 A
,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
示例 1:
输入:[-4,-1,0,3,10] 输出:[0,1,9,16,100]
示例 2:
输入:[-7,-3,2,3,11] 输出:[4,9,9,49,121] 解题:非递减顺序排序的整数数组,如果存在负数,即是说元素平方后,原序列的整体大小情况是:大--小--大,这时候我们采用头尾指针的方式:头部第一个元素与尾部最后一个元素相互比较,即可得出最大的元素,将这个元素存进辅助数组最大的位置;头尾相互逼近式比较,直至头尾指针相遇,结束,这时辅助数组里的序列就是我们想要的结果。
class Solution { public int[] sortedSquares(int[] A) { int len = A.length; if (len == 0) return new int[] {0}; int[] res = new int[len]; // 利用头尾双指针 int i = 0; int j = len - 1; int cur = len-1; while(j>=i){ if(A[i]*A[i] > A[j]*A[j]){ res[cur--] = A[i]*A[i]; //j-- i++; } else{ res[cur--] = A[j]*A[j]; j--; } } return res; } }
原文地址:https://www.cnblogs.com/lisen10/p/leetcode.html
时间: 2024-10-08 19:08:59