方法一:蛮力法,把数组的所有树平方,再排序
class Solution {
public int[] sortedSquares(int[] nums) {
int length=nums.length;
for(int i=0;i<length;i++){
nums[i]=nums[i]*nums[i];
}
Arrays.sort(nums);
return nums;
}
}
方法二:双指针
left=0,right=length-1,用这两个数来记录原始数字的位置
必须再用index来记录新的数组的位置!!!!!!!!!!!!!!
且while里面要left<=right 而不可以left<right,不然最后一个数不会被理睬
class Solution {
public int[] sortedSquares(int[] nums) {
int right=nums.length-1;
int left=0;
int index=nums.length-1;
int []result=new int[nums.length];
while(left<=right){
if(nums[left]*nums[left]<nums[right]*nums[right]){
result[index--]=nums[right]*nums[right];
right--;
}else{
result[index--]=nums[left]*nums[left];
left++;
}
}
return result;
}
}