Linked List Cycle II
2014-09-15 12:19
393 查看
Given a linked list, return the node where the cycle begins. If there is no cycle, return null.
Follow up:
Can you solve it without using extra space?
这个需要传说中的定理:
慢指针从快指针和慢指针第一次相遇的位置开始移动,另一个指针从head开始移动,两者相遇的点即为环入口。
相关证明参考site:环的连接点
代码如下:
Follow up:
Can you solve it without using extra space?
这个需要传说中的定理:
慢指针从快指针和慢指针第一次相遇的位置开始移动,另一个指针从head开始移动,两者相遇的点即为环入口。
相关证明参考site:环的连接点
代码如下:
ListNode *detectCycle(ListNode *head) { ListNode *one = head, *second = head, *ptr = head; while( second && second->next ) { one = one->next; second = second->next->next; if( one == second ) { while( one != ptr ) { one = one->next; ptr = ptr->next; } return ptr; } } return NULL; }
相关文章推荐
- leetcode之Linked List Cycle II
- Linked List Cycle II
- LeetCode Linked List Cycle II 计算带环的链表的起点
- Linked List Cycle II
- leetcode - Linked List Cycle II
- Linked List Cycle II
- Linked List Cycle II
- 【leetcode】【单链表】【142】Linked List Cycle II
- Linked List Cycle II
- Linked List Cycle II
- leetcode--Linked List Cycle II
- leetcode Linked List Cycle II
- LeetCode 解题报告 LinkedListCycleII
- 142. Linked List Cycle II
- LeetCode刷题(C++)——Linked List Cycle II(Medium)
- Linked List Cycle II
- Linked List Cycle II || LeetCode
- Leetcode#142(链表)-Linked List Cycle II
- LeetCode(142)——Linked List Cycle II
- 【leetcode】Linked List Cycle II (middle)