You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3
输出:Reference of the node with value = 8
输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。
示例 2:
输入:intersectVal = 2, listA = [0,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
输出:Reference of the node with value = 2
输入解释:相交节点的值为 2 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [0,9,1,2,4],链表 B 为 [3,2,4]。在 A 中,相交节点前有 3 个节点;在 B 中,相交节点前有 1 个节点。
输入两个链表,找出它们的第一个公共节点。
如下面的两个链表:
在节点 c1 开始相交。
示例 1:
示例 2:
示例 3:
注意:
解法一:
分别设两个指针,使指针分别指向距离终点相同的位置,再使两个指针一起向后遍历,直到找到交叉点或终点。代码如下:
解法二:
哈希表。首先遍历链表A,将结点存入hashtable,再遍历链表B,如果此时某个结点在hashtable中,则此节点就是交点。代码如下:
解法三:
双指针。
最巧妙的一种,借用评论里面的一句话:两个跑速一样的人在不同长短的跑道里跑,怎么才能让他们遇见,不断交换他们的跑道,代码如下:
Refer:
两个链表的第一个公共节点
The text was updated successfully, but these errors were encountered: