代码改变世界

Linked List Cycle

2015-04-07 13:29  笨笨的老兔子  阅读(138)  评论(0编辑  收藏  举报

给定一个链表,判断是否存在环

思路:龟兔赛跑,一个指针兔跑得快,一个指针龟跑得慢,如果有环兔子一定会遇到乌龟(fast == slow),如果没有环兔子一定能到达终点(fast == null)

  1. class Solution {
  2. public:
  3. bool hasCycle(ListNode *head) {
  4. if (head)
  5. {
  6. ListNode* fast = head;
  7. ListNode* slow = head;
  8. while (fast->next != NULL)
  9. {
  10. slow = slow->next;
  11. fast = fast->next->next;
  12. if (fast == NULL )
  13. {
  14. return false;
  15. }
  16. if (fast == slow)
  17. {
  18. return true;
  19. }
  20. }
  21. }
  22. return false;
  23. }
  24. };