Linked List Cycle II

原创 2015年07月09日 11:17:33
<pre name="code" class="cpp">/**
 * 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) {
         ListNode* h1 = head, *h2 = head;
         //h1走一步,h2走两步,两个值必定会相遇
         while(NULL != h1 && NULL != h2)
         {
             h1 = h1->next;
             h2 = h2->next;
             if(h2 == NULL)
                return NULL;
            h2 = h2->next;
            
            if(h1 == h2)//如果相遇,则表示有环。
            {
                h1 = head;
                
                while(h1 != NULL && h2 != NULL)//一个从头走,一个从之前相遇的位置走,则必定会在第一个相交点遇见。
                {    
                    if(h1 == h2)//说明head就是第一个相遇点
                    {
                        return h1;
                    }
                    h1 = h1->next;
                    h2 = h2->next;
                }
                
                break;
            }
         }
         return NULL;
    }
};




            
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【LeetCode】Linked List Cycle II

参考链接 http://www.cnblogs.com/x1957/p/3406448.html 题目描述 Linked List Cycle II   Give...

leetcode:Linked List Cycle II

COPY FROM: 比I麻烦点的就是找到循环开始点TAT I只是判断是否循环。要求不使用额外空间(不然hash就可以了 按I的思路,我们又慢指针S和快指针F。。。F走两...

[LeedCode]Find the Duplicate Number/Linked List Cycle II

看到别人一个时间复杂度为O(n)的解法,觉得很有意思。记录一下。题目: Given an array nums containing n + 1 integers where each intege...

【LeetCode】Linked List Cycle II

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

LeetCode Linked List Cycle II

题目描述:Given a linked list, return the node where the cycle begins. If there is no cycle, return null....

Linked List Cycle II

题目 分析 复杂度 CODE

[leetcode] 142. Linked List Cycle II

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

LeetCode 142 Linked List Cycle II

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

LeetCode Linked List Cycle II

如果给定的单向链表中存在环,则返回环起始的位置,否则返回为空。最好不要申请额外的空间。

[leetcode] 142. Linked List Cycle II 解题报告

题目链接:https://leetcode.com/problems/linked-list-cycle-ii/ Given a linked list, return the node wher...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)