当前位置: 首页 > article >正文

《链表篇》---环形链表

题目传送门 

方法一:哈希表

public class Solution {
    public boolean hasCycle(ListNode head) {
        Set<ListNode> visited = new HashSet<ListNode>();

        while(head != null){
            visited.add(head);
            head = head.next;
            if(visited.contains(head)){
                return true;
            }
        }
        return false;
    }
}

方法二:快慢指针

1.如果没有节点或只有一个节点,返回false。

2.定义一个快指针,一个慢指针。在快指针不等于慢指针的情况下,慢指针走一步,快指针走两步。

3.若快指针走到了最后一个节点,或者最后的空节点。说明没有环,返回false。

4.若有环,则快指针必定会被慢指针追上。因此若相等则返回true。

public class Solution {
    public boolean hasCycle(ListNode head) {
        if(head == null || head.next == null){
            return false;
        }
        
        ListNode slow = head;
        ListNode fast = head.next;

        while(slow != fast){
        if(fast == null || fast.next == null){
            return false;
        }
            slow = slow.next;
            fast = fast.next.next;
        }
        return true;
    }
}

 


http://www.kler.cn/news/368759.html

相关文章:

  • 【CSS in Depth 2 精译_055】8.3 伪类 :is() 和 :where() 的正确打开方式
  • 前端算法:树(力扣144、94、145、100、104题)
  • Python应用指南:利用高德地图API实现路径规划
  • vue文件转AST,并恢复成vue文件(适用于antdv版本升级)
  • Redis 基础 问题
  • pandas快速入门
  • 数据挖掘(二)
  • Typora一款极简Markdown文档编辑器和阅读器,实时预览,序列号生成!免费!最新可用!
  • CentOS 自启动某个应用
  • IP协议详解:报头格式、主机定位、转发流程、网段划分与路由机制
  • vue通过JSON文件生成WPML文件源码
  • 关于 API
  • 【leetcode】动态规划
  • python+大数据+基于Hadoop的个性化图书推荐系统【内含源码+文档+部署教程】
  • 【我的创作纪念日1024】
  • 大数据-187 Elasticsearch - ELK 家族 Logstash Filter 插件 使用详解
  • APS开源源码解读: 排程工具 optaplanner II
  • Windows系统PyCharm右键运行.sh文件
  • Web API 哪家强?Axios、Fetch 和 HttpClient 优选指南
  • html5中获取元素的方法
  • 高效集成:聚水潭奇门至金蝶云星空的数据流自动化
  • Python爬虫-汽车投诉排行榜单数据
  • xss跨站及绕过与防护
  • Spring Boot 架构入门学习指南
  • NameNode的HA特性和基于ZKFC的自动故障转移机制
  • 前端浏览器知识总结