给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
示例 1:
输入:[-4,-1,0,3,10]
输出:[0,1,9,16,100]
示例 2:
输入:[-7,-3,2,3,11]
输出:[4,9,9,49,121]
大致看了下该题在力扣的评论,先平方,然后再sort的解题代码还很多。其实这应该不是本题的题意,要不然没必要强调是非递减顺序排序
。在这里三种情况:纯正数数组,纯负数数组,正负混合的数组。
对于纯正数数组直接代码如下:
int length = A.length;
int res[] = new int[length];
//都是正数,含0
if(A[0]>=0) {
for(int i=0;i=0) {
for(int i=0;i= 0) {
//谁大取谁
if (leftSquare >= rightSquare) {
res[resIndex] = leftSquare;
left++;
fromLeft = true;
} else {
res[resIndex] = rightSquare;
right--;
fromLeft = false;
}
resIndex--;
//防止数组越界
if(left>length-1) {
break;
}
//防止重复对leftSquare或者rightSquare 计算
if (fromLeft) {
leftSquare = (int) Math.pow(A[left], 2);
} else {
rightSquare = (int) Math.pow(A[right], 2);
}
}//end while
return res;