给你一个按 非递减顺序 排序的整数数组 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 int[] sortedSquares(int[] nums) {
//定义一个最左边的指针
int left=0;
//最右边的指针
int right=nums.length-1;
//定义一个和原数组一样长度的数组、存储平方值
int num[] = new int[nums.length];
// 得到元素值平方值,从新数组最后位置开始写
int write = nums.length-1;
// 左右指针相遇(逐渐靠拢的过程)之后不再循环
while(left<=right){
// 如果原数组的左指针对应的平方值大于右指针,那么往新数组最后位置写入左指针对应的平方值
if(nums[left]*nums[left]>nums[right]*nums[right]){
num[write] = nums[left]*nums[left];
// 左指针右移
left++;
//数组左移,移动新数组待写入的位置
write--;
}else{
num[write]=nums[right]*nums[right];
//右指针左移
right--;
write--;
}
}
return num;
}
}