思路:暴力法:全部平方,然后调用排序API,排序算法最快是N*log(N)时间复制度。
双指针法:要利用好原本的数组本就是有序的数组这个条件,
只是有负数 导致平方后变大了,那么平方后的最大值就是在两端取到的,且逐渐往中间变小;所以新建一个数组用来存放平方后的内容,新建两个指针在老数组左右边界,往中间遍历,谁平方大谁就入新数组,再顺便移动边界。
class Solution {public int[] sortedSquares(int[] nums) {int [] ans = new int[nums.length];//老数组的左右边界下标int l = 0;int r = nums.length -1;//填充新数组for(int i=ans.length-1;i>=0;i--) {if(nums[l]*nums[l] <= nums[r]*nums[r]){ans[i] = nums[r]*nums[r];r--;}else {ans[i] = nums[l]*nums[l];l++;}}return ans;}
}