两条不同长度的无环单向链表,寻找它们的第一个交点。
如果上面的两个单向链表相交,则从交点起,两者就合并到同一条链,好像 Y
型一样。
方法:
1. 确定两链表的长度差 n,让较长的链表先向后走 n 步。 此时两链表依次向后走一步,查看结点是否相同,第一个相同的就是第一个交点。(链表长度可以通多遍历一边链表获得。)
2. 两条链表同时依次向后访问,每次一步,选其中一条链表的的结点作为哈希表的键,值设为1表示出现过,同时使用另一链表的结点作为键查看是否在哈希表中出现过,如果出现过则此结点就为第一个交点。
两者的时间均为 Θ(n) Θ ( n )