【leetcode】每日精选题详解之141.环状链表

        嗨,大家好,我是袁厨(因为酷爱做饭,所以自己考取了厨师证)。之前一直看大家写的博客,学到了很多东西。然后最近萌生了自己写的想法,将自己知道的分享给需要的同学。以后每天会为大家分享leetcode精选题目的各种题解和Python, JS, JQ, CSS, PHP, JAVA的一些小Demo。请大家关注我,一起交流学习吧。


题目描述

在这里插入图片描述


暴力解法

做题思路

这个方法有点low,但是也是可以AC的,因为长度不会大于10000,所以当我们大于10000时,肯定是存在环的,如果没有大于10000就输出了说明是没有环的。

题目代码

public class Solution {
    
    
    public boolean hasCycle(ListNode head) {
    
    
        int i = 0;
        while(head!=null){
    
    
            head = head.next;
            i++;
            if(i>10000){
    
    
                break;
            }
        }
        if(i>10000){
    
    
            return true;
        }
        return false;        
    }
}

        


HashSet

做题思路

这个思路就是新建一个HashSet,然后将节点存进去,当每次存新节点时看看HashSet里是否含有该节点了,如果含有则证明有环,如果不含有,且遍历完毕,则证明没有环

题目代码

public class Solution {
    
    
    public boolean hasCycle(ListNode head) {
    
    
      //创建一个存节点的HashSet表
        HashSet<ListNode> list = new HashSet<ListNode>();
        while(head!=null){
    
    
        //判断是否存在
            if(list.contains(head)){
    
    
                return true;
            }else{
    
    
                list.add(head);
                head=head.next;
            }
        }
        return false;
        
    }
}

快慢指针

做题思路

这个做题方法是比较巧妙的,总的思路就是,快指针在前面跑,慢指针在后面追,但是快指针的速度比慢指针的快,所以遇到环的时候,快指针和慢指针会同时陷进环里,又因为速度不一样,所以他俩必会相遇。

题目代码

public class Solution {
    
    
    public boolean hasCycle(ListNode head) {
    
    
        //排除为空和一个节点的情况
        if(head == null || head.next == null){
    
    
            return false;
        }
        //两个指针的位置
        ListNode pro = head.next;
        ListNode last = head;
        //遍历到最后,这里是需要注意的,当节点长度为2,且没有环的时候需要考虑一下
        while( pro != null && pro.next!=null){
    
    
               pro=pro.next.next;
               last=last.next;
               if(pro == last){
    
    
                   return true;
               }
        }
        return false;
        
    }
}

总结

同学们我最近有了一个长久的计划,就是把leetcode题目整理出来,由浅入深,由简到繁都整理出来是一个宏大的工程,所以我打算每天整理一到两个经典题目,完成这一个流程我相信肯定会收获巨大的。如果想一起刷题的哥们,我们可以一起在群里打卡,共同进步。

在这里插入图片描述
在这里插入图片描述

作者:LeetCode
链接:https://leetcode-cn.com/problems/rotate-array/solution/xuan-zhuan-shu-zu-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/tan45du_yuan/article/details/108986013
今日推荐