频道栏目
首页 > 程序开发 > 软件开发 > 其他 > 正文
带环链表 II-LintCode
2017-07-12 15:56:21      个评论    来源:zhaohengchuan的博客  
收藏   我要投稿

带环链表 II-LintCode,给定一个链表,如果链表中存在环,则返回到链表中环的起始节点的值,如果没有环,返回null。
样例
给出 -21->10->4->5, tail connects to node index 1,返回10

#ifndef C103_H
#define C103_H
#include
using namespace std;
class ListNode{
public:
    int val;
    ListNode *next;
    ListNode(int val){
        this->val = val;
        this->next = NULL;
    }
};
class Solution {
public:
    /**
    * @param head: The first node of linked list.
    * @return: The node where the cycle begins.
    *           if there is no cycle, return null
    */
    ListNode *detectCycle(ListNode *head) {
        // write your code here
        ListNode *fast = head, *slow = head;
        while (fast&&fast->next)
        {
            slow = slow->next;
            fast = fast->next->next;
            if (fast == slow)
                break;
        }
        if (fast==NULL || fast->next==NULL)
            return NULL;
        slow = head;
        while (slow != fast)
        {
            slow = slow->next;
            fast = fast->next;
        }
        return slow;
    }
};
#endif
点击复制链接 与好友分享!回本站首页
上一篇:单例模式的几种基本写法
下一篇:Jsp 中转发与重定向的区别
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站