问题描述
给你一个按 非递减顺序 排序的整数数组
nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
问题分析:
既然给定的是一个 非递减顺序的数组
我们可以使用双指针 , 一个指向左边,一个指向右边,比较两边平方后的大小。
哪个大,就把那个数放到当前数组的后面
i--;
即可实现平方后数组 非递减。
代码实现
class Solution {
public int[] sortedSquares(int[] nums) {
int right=nums.length-1;
int left=0;
int[] num = new int[nums.length];
int i=num.length-1;
while(left<=right){
if(nums[left]*nums[left]>nums[right]*nums[right]){
//left指向的数值平方之后数值大
num[i]=nums[left]*nums[left];
i--;
left++;
}else{
num[i]=nums[right]*nums[right];
i--;
right--;
}
}
return num;
}
}
标签:right,java,nums,int,力扣,num,数组,题库,left
From: https://blog.csdn.net/m0_75163045/article/details/143556414