题目

方法1

public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
ListNode a = headA, b = headB;
while (a != b) {
a = a == null ? headB : a.next;
b = b == null ? headA : b.next;
}
return a;
}
}
方法二
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
int lengthA = 0;
int lengthB = 0;
ListNode A = headA;
ListNode B = headB;
while (A != null) {
A = A.next;
lengthA++;
}
while (B != null) {
B = B.next;
lengthB++;
}
int diff = lengthA > lengthB ? lengthA - lengthB : lengthB -lengthA;
boolean flag = lengthA > lengthB ? true : false;
while (diff > 0) {
if (flag) {
headA = headA.next;
} else {
headB = headB.next;
}
diff--;
}
while (headA != headB) {
headA = headA.next;
headB = headB.next;
}
return headA;
}
}