原题链接:力扣
题目描述:
给你一个按非递减顺序排序的整数数组 nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
示例:
输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解题思路:
使用双指针方法,比较nums[left]*nums[left]与nums[right]*nums[right]大小
Java版本答案:
class Solution {
public int[] sortedSquares(int[] nums) {
//双指针法,比较nums[left]*nums[left]与nums[right]*nums[right]大小
int left = 0 ;
int right = nums.length - 1;
int[] result = new int[nums.length];
int index = nums.length - 1;
while(left <= right){
if(nums[left] * nums[left] >= nums[right] * nums[right]){
result[index--] = nums[left] * nums[left];
left ++;
}else{
result[index--] = nums[right] * nums[right];
right --;
}
}
return result;
}
}