160. Intersection of Two Linked Lists
Write a program to find the node at which the intersection of two singly linked lists begins.
For example, the following two linked lists:
1 | A: a1 → a2 |
begin to intersect at node c1.
Notes:
- If the two linked lists have no intersection at all, return
null
. - The linked lists must retain their original structure after the function returns.
- You may assume there are no cycles anywhere in the entire linked structure.
- Your code should preferably run in O(n) time and use only O(1) memory.
题意
找到两个链表中相交的点
答案
1 | class Solution { |
思路
思路十分巧妙,设置两个指针分别指向第一个链表和第二个链表,然后同时往前,当p1 遍历A到头后去遍历B, p2 遍历B到头后去遍历A. 这样两个指针遍历到的距离就相同了,第一个相等的点就是焦点.
Author: corn1ng
Link: https://corn1ng.github.io/2018/01/29/算法/leetcode160/
License: 知识共享署名-非商业性使用 4.0 国际许可协议