LeetCode链接:977. 有序数组的平方 - 力扣(LeetCode)
思路:因为是非递减顺序排序的整数数组(就是升序),利用双指针,指针p1指向0,指p2指向length - 1,最小值可以为负数,负数的平方可能比最大值大,所以取绝对值进行比较,较大值取平方放入新数组的length - 1位置并进行索引减一操作
java代码:
class Solution {
public int[] sortedSquares(int[] nums) {
int left = 0;
int right = nums.length - 1;
int length = nums.length - 1;
int[] newNums = new int[nums.length];
while(left <= right){
if(Math.abs(nums[left]) >= Math.abs(nums[right])){
newNums[length] = nums[left] * nums[left];
left++;
length--;
}else{
newNums[length] = nums[right] * nums[right];
right--;
length--;
}
}
return newNums;
}
}