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

LeetCode100之环形链表(141)--Java

1.问题描述

        给你一个链表的头节点 head ,判断链表中是否有环

        示例1

输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点

        示例2 

输入:head = [1,2], pos = 0
输出:true
解释:链表中有一个环,其尾部连接到第一个节点。

        示例3 

输入:head = [1], pos = -1
输出:false
解释:链表中没有环。

        提示

  • 链表中节点的数目范围是 [0, 104]
  • -105 <= Node.val <= 105
  • pos 为 -1 或者链表中的一个 有效索引 

        难度等级

               简单

        题目链接

                环形链表

2.解题思路

        这道环形链表的问题相当容易解决,有点像我们小学时候的追及问题。我们定义两个快慢指针来模拟两个人相互追及。

        //快指针ListNode fast = head;//慢指针ListNode slow = head;

        如果链表真的是环形链表的话,它就会形成一个圈,那么我们的快慢指针相当于两个人从同一个入口进入一个闭环的操场在跑步。快的那个人只要时间足够,就可以比慢的那个人多跑一圈而相遇。

        我们假设快指针的步频为2,慢指针步频为1,如果快指针能走到尽头,遇到null,说明不是环形链表,如果与慢指针相遇,说明是环形链表。

        //遍历while(fast != null && fast.next != null){//慢指针一次走一步slow = slow.next;//快指针一次走两步fast = fast.next.next;if(slow == fast){return true;}}return false;

3.代码展示

/*** Definition for singly-linked list.* class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public boolean hasCycle(ListNode head) {//快指针ListNode fast = head;//慢指针ListNode slow = head;//遍历while(fast != null && fast.next != null){//慢指针一次走一步slow = slow.next;//快指针一次走两步fast = fast.next.next;if(slow == fast){return true;}}return false;}
}

4.总结

        这道环形链表的题,我们当成小学的追及相遇问题就可以轻松解决了。祝大家刷题愉快~

http://www.lryc.cn/news/485987.html

相关文章:

  • 【ict基础软件赛道】真题-50%openEuler
  • <AI 学习> 下载 Stable Diffusions via Windows OS
  • 计算机图形学在游戏开发中的应用
  • 【CubeMX-HAL库】STM32H743II——SDRAM配置所遇问题
  • mac上使用docker搭建gitlab
  • 二维数组操作
  • uniapp设置tabBar高斯模糊并设置tabBar高度占位
  • 上市公司代理成本数据大全(第一类和第二类代理成本均有)1991-2023年
  • CA-Markov模型概述及其MATLAB实现
  • 《生成式 AI》课程 第3講 CODE TASK执行文章摘要的机器人
  • HCIP-HarmonyOS Application Developer 习题(二十二)
  • c++原型模式(Prototype Pattern)
  • 联通大数据面试题及参考答案
  • MySQL数据库:SQL语言入门 【3】(学习笔记)
  • uniapp 实现tabbar分类导航及滚动联动效果
  • 华为数字化转型的本质为何是管理变革
  • 【数据库】深入解析慢 SQL 的识别与优化策略
  • Linux从入门到精通
  • 代码随想录算法训练营第四十四天|Day44 动态规划
  • C++初阶——优先队列
  • 10月月报 | Apache DolphinScheduler进展总结
  • WSL--无需安装虚拟机和docker可以直接在Windows操作系统上使用Linux操作系统
  • 《AI 之影》
  • QT5.14*解决QSslSocket::connectToHostEncrypted: TLS initialization faile
  • 高效分支管理规范
  • 跟我学C++中级篇——RAII
  • C语言第九周课——经典算法
  • 【Pikachu】XML外部实体注入实战
  • vue2项目中在线预览csv文件
  • 基于VUE实现语音通话:边录边转发送语言消息、 播放pcm 音频