有序数组的平方
class Solution {
public int[] sortedSquares(int[] nums) {
int newarr[] = new int [nums.length];
int left = 0;
int right = nums.length-1;
int index = newarr.length-1;
while(left<=right){
if(nums[left]*nums[left]>=nums[right]*nums[right]){
newarr[index] = nums[left]*nums[left];
index--;
left++;
}
else {
newarr[index] = nums[right]*nums[right];
index--;
right--;
}
}
return newarr;
}
}
双指针的应用。
left和right从两边向中间开始遍历。分别确定数组中元素在新数组中的位置。
最后left == right的时候,即到达最后一个元素。、
这里悟出了一个道理:else if 和 if 还是有区别的。
if的话,它里面的条件是会去判断的。
但是else if 的话,如果你上面的 if 执行过了,那下面的else if 中的条件是不会去判断的。
双指针解决有序数组平方问题
1048

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



