Leetcode Linked List Cycle II
2013-11-12 19:58
417 查看
解法参考:http://blogread.cn/it/article/2452?f=hot1
先判断有没有环,有环的话,设两个指针,一个指针在head,另一个指针在相遇的点,两个指针同时往前走,则这两个指针相遇的点就是环的开始节点。
先判断有没有环,有环的话,设两个指针,一个指针在head,另一个指针在相遇的点,两个指针同时往前走,则这两个指针相遇的点就是环的开始节点。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *detectCycle(ListNode *head) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. ListNode *cross = findCross(head); ListNode *tmp = head; if(cross != NULL){ while(tmp != cross){ cross = cross->next; tmp = tmp->next; } } return cross; } ListNode *findCross(ListNode *head){ if(head == NULL || head->next == NULL) return NULL; ListNode *cross = NULL, *one = head->next, *two = head->next->next; while(one != NULL && two != NULL){ if(one == two){ cross = one; return cross; } if(two->next == NULL) return cross; one = one->next; two = two->next->next; } return cross; } };
相关文章推荐
- [Leetcode]Linked List Cycle II
- 【LeetCode】Linked List Cycle II
- 【Leetcode】Linked List Cycle II
- [LeetCode][JavaScript]Linked List Cycle II
- leetcode 刷题之路 59 Linked List Cycle II
- 【LeetCode题解】142_环形链表2(Linked-List-Cycle-II)
- [leetcode]Linked List Cycle II @ Python
- LeetCode Linked List Cycle II
- LeetCode 142 — Linked List Cycle II(C++ Java Python)
- [LeetCode] Linked List Cycle II 单链表中的环之二
- leetcode-141&142 Linked List Cycle I & II
- leetcode之linked List cycle && linked List cycle II
- LeetCode "Linked List Cycle II"
- [leetcode]Linked List Cycle II
- LeetCode – Refresh – Linked List Cycle II
- [LeetCode] Linked List Cycle II, Solution
- LeetCode | Linked List Cycle II
- Leetcode_linked-list-cycle-ii
- LeetCode Linked List Cycle II 计算带环的链表的起点
- leetcode142 Linked List Cycle II