大家的题解都是双指针双百解法。
我来说一个这题的实际应用:
求两个类最低一层的公共父类,就是两个树节点最低一层的公共祖先节点。
这里的树节点内容不是left和right,而是指向父节点的指针。
两个类都用.getSuperclass()方法生成直到Object的两个链表,
再调用这个题的方法就求出了第一个公共祖先。

public class Solution {
    public ListNode FindFirstCommonNode(ListNode headA, ListNode headB) {
        if(headA == null || headB == null) return null;
        ListNode a = headA, b = headB;
        int len1 = 0, len2 = 0, sum = 0;
        while(a != null && ++len1 > 0) a = a.next;
        while(b != null && ++len2 > 0) b = b.next;
        a = headA;
        b = headB;
        while (a != b){
            if(a.next == null) a = headB;
            else a = a.next;
            if(b.next == null) b = headA;
            else b = b.next;
            if(sum++ > len1 + len2) return null;
        }
        return a;
    }
}