例: 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100]
由于nums数组递减,那么在数组两端的数据平方后一定会产生一个最大值。
因此我们用low指针指向数组开头,用high指针指向数组结束,两两比较大小,将更大的平方数填进数组results的最后一个位置中。
class Solution {
public int[] sortedSquares(int[] nums) {
int len=nums.length;
int low=0;
int high=len-1;
int cnt=len-1;
int[] results=new int[len];
while(low<=high){
if(nums[low]*nums[low]>=nums[high]*nums[high]){
results[cnt--]=nums[low]*nums[low];
low++;
}else{
results[cnt--]=nums[high]*nums[high];
high--;
}
}
return results;
}
}