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

环形链表-力扣

一、题目描述

题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 

二、题解 

解题思路:

快慢指针,即慢指针一次走一步,快指针一次走两步,两个指针从链表起始位置开始运行,如果链表带环,则一定会在环中相遇,否则快指针率先走到链表的末尾。

扩展:

 1、为什么快指针每次走两步,慢指针走一步可以?

假设链表带环,两个指针最后都会进入环,快指针先进环,慢指针后进环。当慢指针刚进环时,可能就和快指针相遇了,最差情况下两个指针之间的距离刚好就是环的长度。此时,两个指针每移动一次,之间的距离就缩小一步,不会出现每次刚好是套圈的情况,因此:在慢指针走到一圈之前,快指针肯定是可以追上慢指针的,即相遇。  

2、快指针一次走3步,走4步,...n步行吗? 

所以解决该题时,我们使用快慢指针,即慢指针一次走一步,快指针一次走两步,两个指针从链表起始位置开始运行,如果链表带环,则一定会在环中相遇。

三、代码 

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

另一种写法:

 public boolean hasCycle2(ListNode head) {
        ListNode fast = head;
        ListNode slow = head;
        while (fast != null && fast.next !=null) {
            fast = fast.next.next;
            slow = slow.next;
            if(fast == slow) {
                break;
            }
        }
        if (fast == null||fast.next == null) {
            return false;
        }
        return true;
    }


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

相关文章:

  • 万字长文解读深度学习——生成对抗网络GAN
  • 67页PDF |埃森哲_XX集团信息发展规划IT治理优化方案(限免下载)
  • UVa 11855 Buzzwords
  • UAC2.0 speaker——同时支持 16bit,24bit 和 32bit
  • 火车车厢重排问题,C++详解
  • 【Java语言】String类
  • 【影刀演示_发送邮件的格式化HTML留存】
  • 【MATLAB源码-第61期】基于蜣螂优化算法(DBO)的无人机栅格地图路径规划,输出最短路径和适应度曲线。
  • 玩转视图变量,轻松实现动态可视化数据分析
  • 深度神经网络的数学原理:基于超平面、半空间与线性区域的表示
  • stm32通过AT指令与esp8622通信
  • JVM——GC垃圾回收器
  • 06 MIT线性代数-线性无关,基和维数Independence, basis, and dimension
  • SpreadJS 16.2.2 + GcExcel 6.2.3 相结合,还有更强的吗
  • Android WMS——WM窗口管理(八)
  • 小程序request请求封装
  • 使用 @antfu/eslint-config 配置 eslint (包含兼容uniapp方法)
  • 社恐了怎么办?如何改变社交恐惧症?
  • 代码随想录算法训练营第23期day36|738.单调递增的数字、968.监控二叉树
  • request、response请求转发和重定向
  • C++面试题库
  • el-date-picker日期选择器奇怪的问题解决
  • github搜索技巧探索
  • 人工智能与航天技术的融合:未来发展的新趋势
  • 2015年亚太杯APMCM数学建模大赛B题城市公共交通服务水平动态评价模型求解全过程文档及程序
  • java spring boot 字符串判空