原题链接:力扣
题目描述:
给你一个按非递减顺序排序的整数数组 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;
}
}
给定一个按非递减顺序排列的整数数组,需要返回每个元素平方后的值,且新数组依然保持非递减排序。解题方法是使用双指针,比较左右两端元素的平方值,将较大的放入结果数组中。
507

被折叠的 条评论
为什么被折叠?



