java 经典双指针
双指针p1、p2指向两数组的首元素,从左向右遍历。
因为i <= j 且 nums1[i] <= nums2[j]才有效,所以nums1[p1] > nums2[p2]无效,并且p1要始终保持<=p2,
所以如果p1 == p2的时候,两个指针都向后移动一格,否则p2不动p1向后移动
class Solution {
public int maxDistance(int[] nums1, int[] nums2) {
int p1 = 0;
int p2 = 0;
int res = 0;
while (p1 < nums1.length && p2 <nums2.length){
if(nums1[p1] > nums2[p2]){ //无效
if(p1 == p2){
p1++;
p2++;
}else p1++;
}else { //有效
res =Math.max(res,p2-p1);
p2++;
}
}
return res;
}
}