给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
示例 1:
输入:[-4,-1,0,3,10]
输出:[0,1,9,16,100]
示例 2:
输入:[-7,-3,2,3,11]
输出:[4,9,9,49,121]
来源:力扣(LeetCode)
思路清晰明了,双指针:
class Solution {
public int[] sortedSquares(int[] A) {
int n=A.length;
int res[]=new int[n];
int left=0,right=n-1;
int index=n-1;
while(left<=right){
while(left<=right && Math.abs(A[left])>=Math.abs(A[right])){
res[index--]=A[left]*A[left++];
}
while(left<=right && Math.abs(A[left])<Math.abs(A[right])){
res[index--]=A[right]*A[right--];
}
}
return res;
}
}