977
有序数组的平方
输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]
排序后,数组变为 [0,1,9,16,100]
最大元素在两边,使用两个指针从两边到中间合拢
更新方法从大到小
vector<int>result(nums.size(),0);
int k=nums.size()-1;//新数组的下标
int i=0,j=nums.size()-1; //分别从两边往中间取
while(i<=j){
if(nums[i]*nums[i]<nums[j]*nums[j]){
result[k--]=nums[j]*nums[j];
j--;
}
//num[i]*nums[i] >= nums[j]*nums[j]
else {
result[k--]=nums[i]*nums[i];
i++;
}
}
return result;
class Solution {
public int[] sortedSquares(int[] nums) {
int []res = new int [nums.length ];
int k = nums.length -1;
int j=nums.length-1;
int i =0;
while(i<=j){
if(nums[i]*nums[i] > nums[j]*nums[j]){
res[k--] = nums[i]*nums[i];
i++;
}else{
res[k--] = nums[j]*nums[j];
j--;
}
}
return res;
}
}