### 描述

Given the heads of two singly linked-lists `headA`

and `headB`

, return *the node at which the two lists intersect*. If the two linked lists have no intersection at all, return `null`

.

For example, the following two linked lists begin to intersect at node `c1`

:

The test cases are generated such that there are no cycles anywhere in the entire linked structure.

**Note** that the linked lists must **retain their original structure** after the function returns.

**Custom Judge:**

The inputs to the **judge** are given as follows (your program is **not** given these inputs):

`intersectVal`

- The value of the node where the intersection occurs. This is`0`

if there is no intersected node.`listA`

- The first linked list.`listB`

- The second linked list.`skipA`

- The number of nodes to skip ahead in`listA`

(starting from the head) to get to the intersected node.`skipB`

- The number of nodes to skip ahead in`listB`

(starting from the head) to get to the intersected node.

The judge will then create the linked structure based on these inputs and pass the two heads, `headA`

and `headB`

to your program. If you correctly return the intersected node, then your solution will be **accepted**.

**Example 1:**

1 | Input: intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4,5], skipA = 2, skipB = 3 |

**Example 2:**

1 | Input: intersectVal = 2, listA = [1,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1 |

**Example 3:**

1 | Input: intersectVal = 0, listA = [2,6,4], listB = [1,5], skipA = 3, skipB = 2 |

**Constraints:**

- The number of nodes of
`listA`

is in the`m`

. - The number of nodes of
`listB`

is in the`n`

. `0 <= m, n <= 3 * 104`

`1 <= Node.val <= 105`

`0 <= skipA <= m`

`0 <= skipB <= n`

`intersectVal`

is`0`

if`listA`

and`listB`

do not intersect.`intersectVal == listA[skipA] == listB[skipB]`

if`listA`

and`listB`

intersect.

**Follow up:** Could you write a solution that runs in `O(n)`

time and use only `O(1)`

memory?

### 分析

这是个双指针问题。走一个8字型的路线，两个指针最终会相遇在相交的位置。

### 解决方案1（Python）

1 | # Definition for singly-linked list. |

### 解决方案2(Golang)

1 | /** |