题目

输入两个链表,找出它们的第一个公共节点。

思路

这个题目仔细观察观察,可以发现

  • 如果两者有公共交点,长度若是一样,则第一圈就相遇,若长度不一样,第二圈相遇
  • 如果两者没有公共交点,长度若是一样,第一圈就out,若长度不一样,第二圈out

代码

  1. public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
  2. if (headA == null || headB == null) {
  3. return null;
  4. } else {
  5. ListNode cur1 = headA;
  6. ListNode cur2 = headB;
  7. while (cur1 != cur2) {
  8. cur1 = (cur1 == null) ? headB : cur1.next;
  9. cur2 = (cur2 == null) ? headA : cur2.next;
  10. }
  11. return cur1;
  12. }
  13. }