题目:977.有序的数组的平方
初始代码
class Solution {
public int[] sortedSquares(int[] nums) {
}
}
解题思路
- 使用双指针(头尾指针)
- 因为是有序数组,所以元素平方后的大小应该是两边向中间依次变小
- 将头尾指针所指的元素平方后进行比较,将较大的值添加到新数组的最后,然后将较大值所在指针往左或往右移,进行下一次比较
代码
class Solution {
public int[] sortedSquares(int[] nums) {
int len = nums.length;
int l = 0, r = len - 1, k = len - 1;
int[] res = new int[len];
while (l <= r) {
if (nums[l] * nums[l] > nums[r] * nums[r]) {
res[k--] = nums[l] * nums[l];
l ++;
} else {
res[k--] = nums[r] * nums[r];
r --;
}
}
return res;
}
}