zoukankan      html  css  js  c++  java
  • [LeetCode] Linked List Cycle II

    Again, a classic interview question of linked list. Similar to Linked List Cycle, we maintain two pointers fast and slow: fast move two steps at one time while slow moves one step at a time. Once they become NULL, return NULL (no cycle). Otherwise, they will equal at some time. At this time, move any one of them back to head and then move both of them one step at a time. Then they will meet at the same node again. At this time, that node is where the cycle begins. Return it and we are done.

    The code is as follows.

     1     ListNode* detectCycle(ListNode* head) {
     2         ListNode* slow = head;
     3         ListNode* fast = head;
     4         while (fast && fast -> next) {
     5             slow = slow -> next;
     6             fast = fast -> next -> next;
     7             if (slow == fast) {
     8                 slow = head;
     9                 while (slow != fast) {
    10                     slow = slow -> next;
    11                     fast = fast -> next;
    12                 }
    13                 return slow;
    14             }
    15         }
    16         return NULL;
    17     }
  • 相关阅读:
    Gson简要使用笔记
    android入门到熟练(五)---广播
    95&&96.Unique Binary Search Trees I&&II
    day 08 文件操作
    07 深浅拷贝
    06 day小数据池
    05,.字典,集合
    列表和元组
    字符串
    while 循环,格式化输出和运算编码
  • 原文地址:https://www.cnblogs.com/jcliBlogger/p/4562139.html
Copyright © 2011-2022 走看看