zoukankan      html  css  js  c++  java
  • lintcode-102-带环链表

    102-带环链表

    给定一个链表,判断它是否有环。

    样例

    给出 -21->10->4->5, tail connects to node index 1,返回 true

    挑战

    不要使用额外的空间

    标签

    链表 两根指针

    思路

    快慢指针的典型应用,使用块指针 fast 与慢指针 slow,slow每次后移一位,fast 每次后移两位,当fast 与 slow 指向同一节点时,说明存在环。就如同操场跑圈时,领先一圈的人会遇上跑在他后面的人那样。

    code

    /**
     * Definition of ListNode
     * 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: True if it has a cycle, or false
         */
        bool hasCycle(ListNode *head) {
            // write your code here
            ListNode * fast = head, *slow = head;
    
            while(fast != NULL && fast->next != NULL) {
                slow = slow->next;
                fast = fast->next->next;
    
                if(fast == slow) {
                    return true;
                }
            }
    
            return false;
        }
    };
    
  • 相关阅读:
    c++好习惯
    mysql:表
    负载均衡
    KBEngine:架构
    skynet的一些运维数据
    Linux学习—LVM快照功能
    跳跃表
    SQL --Chater03 聚合与排序
    SQL --Chapter02 查询基础
    SQL---Chapter01 数据库和SQL
  • 原文地址:https://www.cnblogs.com/libaoquan/p/7168296.html
Copyright © 2011-2022 走看看