zoukankan      html  css  js  c++  java
  • 142. Linked List Cycle II

    Given a linked list, return the node where the cycle begins. If there is no cycle, return null.

    Note: Do not modify the linked list.

    Follow up:
    Can you solve it without using extra space?

     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     ListNode *next;
     6  *     ListNode(int x) : val(x), next(NULL) {}
     7  * };
     8  */
     9 class Solution {
    10 public:
    11     ListNode *detectCycle(ListNode *head) {
    12         if(head == NULL || head->next == NULL){
    13             return NULL;
    14         }
    15         
    16         ListNode* slow = head;
    17         ListNode* fast = head;
    18         
    19         while(fast->next != NULL && fast->next->next != NULL){
    20             fast = fast->next->next;
    21             slow = slow->next;
    22             
    23             if(fast == slow){
    24                 slow = head;
    25                 
    26                 while(slow != fast){
    27                     slow = slow->next;
    28                     fast = fast->next;
    29                 }
    30                 
    31                 return slow;
    32             }
    33         }
    34         return NULL;
    35     }
    36 };
  • 相关阅读:
    HDU 4334
    HDU 1280
    HDU 1060
    HDU 4033
    大三角形分成4个面积相等的小三角形
    HDU 1087
    HDU 4313
    Sleep(0)及其使用场景
    Decorator(装饰、油漆工)对象结构型模式
    Debug Assertion Failed!
  • 原文地址:https://www.cnblogs.com/sankexin/p/5866028.html
Copyright © 2011-2022 走看看