给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
因为数组是递增数列,所以只需要考虑两端,采用双指针的方法。并且申请一个新的数组。
code-thinking.cdn.bcebos.com/gifs/977.%E…
int left = 0, right = A.length-1;
int k = A.length-1;
int[] result = new int[A.length];
while(left <= right){
if(A[left]*A[left] > A[right]*A[right]){
result[k--] = A[left]*A[left];
left++;
}else{
result[k--] = A[right]*A[right];
right--;
}
}
return result;