zoukankan      html  css  js  c++  java
  • leetcode 141.环形链表

    给定一个链表,判断链表中是否有环。(不使用额外空间)

    示例:a-b-c-b

    思路:

    1.快慢指针方法

    设置两个指针,快指针每次走两步,慢指针每次走一步,如果是环形的话快指针一定会追上慢指针,等到快指针和慢指针相等的时候,就返回true。否则就返回false

    var hasCycle = function(head) {
            //1.判断不存在的情况
            if (!head || !head.next) {
                return false
            }
            //2.双指针循环
            var fast = head.next
            var slow = head
            //2.1快指针每次走两步,慢指针每次走一步,如果快指针一直有值,那就证明是环形,直到两个相等就退出
            while(fast && fast.next){
                if(fast == slow) {
                    return true
                }
                fast = fast.next.next
                slow = slow.next
            }
            //2.2否则,就不是环形
            return false
        };

    2.不知道是什么方法

    var hasCycle = function(head) {
            while(head != null){
                if(head == head.next){
                    return true;
                }
                if(head.next != null){
                    head.next = head.next.next;
                }
                head = head.next;
            }
            return false;
        };

    这种方法会破坏链表结构,不推荐

    不积跬步无以至千里
  • 相关阅读:
    CentOS-7 虚拟机意外断电后的数据恢复
    CentOS7 搭建VNC 服务
    CentOS7-ulimit
    CentOS-7 初始化配置
    Centos Bond设置实例
    服务检测脚本
    sshd服务
    input常用属性
    前端工具-Sublime、WebStorm-快捷方式使用
    随机抽选效果、随机抽选红色球
  • 原文地址:https://www.cnblogs.com/lyt0207/p/12359354.html
Copyright © 2011-2022 走看看