思路
从数组左右两边同时开始,因为数组初始有序,所以可以直接比较绝对值大小,大的放在结果数组最后,依次排到最前。
class Solution {
public int[] sortedSquares(int[] A) {
int[] result = new int[A.length];
for (int i=0,j=A.length-1,k=A.length-1; k>=0; k--) {
if (abs(A[i])<A[j])
result[k] = power(A[j--]);
else result[k] = power(A[i++]);
}
return result;
}
private int abs(int num) {
return num>0?num:-num;
}
private int power(int num) {
return num*num;
}
}