一、题目内容
二、题解
解法1:
思路
代码
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) {* val = x;* next = null;* }* }*/public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode A = headA, B = headB;while (A != B) {A = A != null ? A.next : headB;B = B != null ? B.next : headA;}return A;}}
解法2:
思路
- 先对两条链表进行遍历,分别得到两条链表的长度,并计算差值 d。
让长度较长的链表先走 d 步,然后两条链表同时走,第一个相同的节点即是节点。
代码
```java /**
- Definition for singly-linked list.
- public class ListNode {
- int val;
- ListNode next;
- ListNode(int x) {
- val = x;
- next = null;
- }
} */ public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
if (headA == null || headB == null) {return null;}int lena = 0, lenb = 0;ListNode a = headA, b = headB;while (a != null) {lena++;a = a.next;}while (b != null) {lenb++;b = b.next;}int d = lena - lenb;if (d > 0) {while (d-- > 0) {headA = headA.next;}} else {d = -d;while (d-- > 0) {headB = headB.next;}}while (headA != headB) {headA = headA.next;headB = headB.next;}return headA;
} }
```

