【leetcode 简单】第三十六题 相交链表
程序员文章站
2023-09-28 15:13:36
编写一个程序,找到两个单链表相交的起始节点。 例如,下面的两个链表: 在节点 c1 开始相交。 注意: 如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。 ......
编写一个程序,找到两个单链表相交的起始节点。
例如,下面的两个链表:
a: a1 → a2 ↘ c1 → c2 → c3 ↗ b: b1 → b2 → b3
在节点 c1 开始相交。
注意:
- 如果两个链表没有交点,返回
null
. - 在返回结果后,两个链表仍须保持原有的结构。
- 可假定整个链表结构中没有循环。
- 程序尽量满足 o(n) 时间复杂度,且仅用 o(1) 内存。
/** * definition for singly-linked list. * struct listnode { * int val; * struct listnode *next; * }; */ struct listnode *getintersectionnode(struct listnode *heada, struct listnode *headb) { struct listnode *a=heada; struct listnode *b=headb; while(a!=b) { if (null == a) { a=headb; } else { a=a->next; } if (null == b) { b=heada; } else { b=b->next; } } return b; }
上一篇: php使用ereg验证文件上传的方法