给你一个按 非递减顺序 排序的整数数组 nums
,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
示例 1:
输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]
排序后,数组变为 [0,1,9,16,100]
示例 2:
输入:nums = [-7,-3,2,3,11]
输出:[4,9,9,49,121]
class Solution {
public static int[] sortedSquares(int[] A) {//Array.sort方法
for(int i=0;i<A.length;i++){
A[i]=(int)Math.pow(A[i],2);
}
Arrays.sort(A);
return A;
}
public static int[] sortedSquares(int[] A) {//双指针法
int left = 0, right = A.length - 1, pos = right;
int[] intsorts = new int[A.length];
while (left <= right) {//左闭右闭
if (-A[left] > A[right]) {
intsorts[pos] = A[left] * A[left];
left++;
pos--;
} else {
intsorts[pos] = A[right] * A[right];
right--;
pos--;
}
}
return intsorts;
}
public static void main(String[] args) {
int[] ints = {-1, 1, 2, 3, 4};
for (int i : sortedSquares(ints)) {
System.out.print(i + "\t");
}
}
}