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

LCR 021

题目:LCR 021


解法一:快慢指针

判断循环是否存在,一般用快慢指针算法解决。

fast 每次走两个单位,slow 每次走一个单位。当二者在环内相遇时,再创建一个指针 ptr 指向 head ,和 slow 同时走,每次走一个单位,slowptr 指针相遇位置,便是入环点

    public ListNode detectCycle(ListNode head) {
        ListNode slow = head, fast = head, ptr = head;
        while (fast != null) {
            slow = slow.next;
            //空指针判断
            if (fast.next == null) return null;
            else fast = fast.next.next;
            if (fast == slow) {
                while (ptr != slow) {
                    ptr = ptr.next;
                    slow = slow.next;
                }
                return ptr;
            }
        }
        return null;
    }
}

注意fast每次走两个单位,当已经指向最后一个元素时,再连续走两个单位就会报空指针异常,因此fast走两个单位时需要作空指针判断



http://www.kler.cn/a/299047.html

相关文章:

  • uniapp开发app,cover-view不能隐藏,使用v-if,v-show都不行的解决办法
  • CTF学习24.12.21[隐写术进阶]
  • MySql:基本查询
  • HBase、Hive、Redis 和 MongoDB的对比
  • 【Lua热更新】上篇
  • Spring Boot--06--整合Swagger
  • SpringBoot2:请求处理原理分析-接口方法的返回值处理(returnValueHandlers)
  • Redis 入门 - 五大基础类型及其指令学习
  • 【安卓13 源码】Input子系统(3) - EventHub增加设备的流程
  • C++ | Leetcode C++题解之第398题随机数索引
  • excel无法保存文件
  • 速盾:普通cdn和高防cdn差别在哪里?
  • 小程序事件函数传参
  • 2024版保姆级Anaconda+pycharm安装(中文)及环境配置教程
  • Qt C++ Udp相关知识学习(一)
  • javase复习day22集合进阶
  • tekton pipeline workspaces
  • 从虚拟现实到元宇宙:Facebook引领未来社交的下一步
  • 算法练习题21——卡片(模拟)
  • ubuntu ifconfig只有lo
  • Unexpected token ‘o‘, “[object Obj“... is not valid JSON 报错原因解释
  • larave5.8记录运行时产生的所有sql
  • 数据结构应用实例(四)——最小生成树
  • 性能测试 —— docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台!
  • Flask session cookie 失效在Safari中的解决方法
  • 《OpenCV计算机视觉》—— 图像金字塔