码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 141.环形链表

时间:2020-02-25 00:05:47      阅读:50      评论:0      收藏:0      [点我收藏+]

标签:ret   function   head   fas   fun   情况   code   next   表结构   

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

示例: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;
    };

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

 

leetcode 141.环形链表

标签:ret   function   head   fas   fun   情况   code   next   表结构   

原文地址:https://www.cnblogs.com/lyt0207/p/12359354.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!