前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LeetCode141题 环形链表(Linked List Cycle)

LeetCode141题 环形链表(Linked List Cycle)

作者头像
code随笔
发布于 2020-04-14 03:35:59
发布于 2020-04-14 03:35:59
29100
代码可运行
举报
文章被收录于专栏:code随笔的专栏code随笔的专栏
运行总次数:0
代码可运行

题目描述:

给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。

Map集合解法

思路: 创建一个map集合,key为节点,value为地址值,因为ListNode没有重写toString()方法,所以用toString()方法返回的内容作为value。 如果map中存在当前节点的toString()方法返回的内容,则存在环。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 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) {
        if(head == null){
            return false;
        }
        Map<ListNode,String> map = new HashMap<ListNode,String>();
        while(head != null){
            if(map.containsValue(head.toString())){
                return true;
            }
            else{
                map.put(head,head.toString());
                head = head.next;
            }
        }
        return false;
    }
}

提交结果截图:

快慢指针解法

分析: 将slow指针指向head; 将fast指针指向head.next; 在循环的过程中slow走一步,fast走两步,如果存在环,则slow和fast一定会相遇,如本例子中:slow在1处,fast在2处;然后slow走一步,到2处,fast走两步,到4处;slow到3处,fast到3处,slow和fast相遇。 代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 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) {
        if(head == null)
            return false;
        ListNode slow = head;
        ListNode fast = head.next;
        while(fast != null){
            if(slow == fast){
                return true;
            }
            slow = slow.next;
            fast = fast.next;
            if(fast != null)
                fast = fast.next;
        }
        return false;
    }
}

对代码的解释: 1、如果head为空,则不是环,返回false; 2、如果fast不为空,则进入循环体;否则退出循环,无环,返回false; 3、如果slow和fast指向的节点相同,则存在环,返回true; 4、slow向后移动一个节点; 4、fast向后移动一个节点,如果fast不为空,再向后移动一个节点(不能直接移动两个节点,否则会报空指针异常);转2。 提交结果截图:

由图可知,快慢指针方法更好一些。

欢迎关注

长按下方二维码即可关注,微信公众号:code随笔

微信公众号:code随笔

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 code随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【玩转腾讯云】个人网站搭建详解
在这个互联网时代,人人都谈网络,杂家也不能落后不是,就在这时,小编又适时的出来教你装逼了,今天我们来唠一唠如何拥有一个属于自己的网站,网站上线运行前期操作流程是怎样的。
石璞东
2019/07/26
12.7K0
【玩转腾讯云】个人网站搭建详解
云服务器和虚拟主机有什么区别?
有一些朋友刚开始建站可能不知道什么是云服务器和云虚拟主机,其实他们两个不一样但是有一部分确实相同的。
用户7162790
2022/03/23
11.1K0
手把手教你搭建一个属于自己的网站
网站也可以理解为web应用程序,只不过无需用户下载,只要有网络,随时随地都能访问。
游魂
2018/10/25
7.2K0
搭建个人网站
以下内容已按搭建网站的过程排序 方法一: 服务器 + 自我配置 购买服务器与域名: 具体购买请参照个人需求自行选择 可以前往腾讯云/阿里云 购买完成后根据相关指导进行备案 进行域名的备案与解析: 域名的备案可参考各服务平台的文件, 购买完服务器后可以获得公网IP,域名的解析使域名变成可以登录的网址。 IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。域名解析也叫域名指向、服务器设置、域名配置以及反
_xiaoSu
2022/11/08
7.5K0
IXWEBHosting主机面板创建MYSQL数据库用户及导入还原数据库教程
IXWEBHosting主机采用的是自己独创的管理面板,对于初次使用的用户可能还会有点陌生,毕竟是全英文的界面,即便有中文客服我们也不能什么事情都找客服解决。一般类似IX这样的老牌虚拟主机商,基本上遇到的问题在网上都可以找到解决方法,比如老蒋在帮客户搭建网站用到IX的时候,需要导入数据,这里就记录利用IXWEBHosting面板创建和导入MYSQL数据库的过程。
老蒋
2021/12/27
9390
IXWEBHosting主机面板创建MYSQL数据库用户及导入还原数据库教程
怎么快速搭建一个英文博客!
博客是网站的一的一种类型,搭建一个英文博客和搭建网站的原理是一样的,只不过是在WordPress主题选择上有所不同。今天这个教程教大家怎么快速的去搭建一个英文博客。适合小白操作。
Hoan外贸建站
2020/12/04
3.7K0
wordpress搭建网站需要掌握和了解哪些知识点?
wordpress搭建网站需要掌握和了解哪些知识点?【文章来源:https://www.zouaw.com/4512.html】
wordpress建站吧
2019/06/12
1.8K0
服务器篇——如何搭建一个属于你的博客
很久很久以前,我还是选择虚拟主机的,但是现在还是选择服务器好一点,也方便一点,而且价格也贵不到哪里去,腾讯云现在活动100元一年,自己建个博客绰绰有余了,还可以做点其他的学习之用,(但是这些活动服务器都是国内的,如果需要搭建网站的话就必须备案了,不过备案现在也不麻烦,本站lanol.cn从开始备案到备案成功也就一个星期左右)。
SingYi
2022/07/14
1.9K0
服务器篇——如何搭建一个属于你的博客
把网站部署在家里!--群晖docker下装宝塔面板
部署环境我想了几种方案,因为家里软路由上装的是esxi,所以想过搞一个liunx的虚拟机,然后再装宝塔面板。后来为了简单,还是在群晖上装一个宝塔面板的docker版本。
星橙
2021/09/09
18.7K1
把网站部署在家里!--群晖docker下装宝塔面板
云服务器和虚拟主机有什么区别,该选择哪种类型?
昨天转载了昝辉老师的SEO优化文章,文章曾提到关于主机是否会对SEO有影响,结果影响不大,除非因作弊导致的连带责任,但是在选择主机的时候可能就犯难了。我记得在前些年,虚拟机是最火的因为便宜,对于新手站长来说能免费就不花钱,景安很长时间有免费的主机,我之前也一直再用,还不错,只是去年景安的免费虚拟机全部停运了,挺可惜。今年开始盛行云服务器,价格比虚拟机稍稍贵一些,但是新用户基本都是1折起,这么算下来跟虚拟机售价一样了,至于怎么选择,我们一起探讨一下。
李洋博客
2023/03/03
6.5K0
云服务器和虚拟主机有什么区别,该选择哪种类型?
低成本搭建腾讯云网站服务器(自己搭建网站服务器)
服务器最大的用途,就是可以搭建网站,许多人都认为搭建网站是一件很难的事情,因为包含许多的比较专业东西,比如服务器、编程之类的,确实,在几年前是这样的,普通人想要自己做一个网站太难了
用户5576896
2022/07/20
13.1K0
从零开始折腾博客:服务器,购买和配置
独立服务器:顾名思义,就是一个躺在机房的实实在在的物理服务器,专属于你,和你家的主机没啥区别,除了24小时运行。不过既然是专属的,价格嘛...
用户5921413
2019/10/09
5.5K0
从零开始折腾博客:服务器,购买和配置
云服务器搭建网站教程-用腾讯云服务器搭建网站
建网站本身是没有什么难度的,只是配套需要的东西有些繁琐,我们需要提前准备一些软件之类的必备的东西,其中主要包括:
用户6486825
2019/10/17
30.6K0
云服务器搭建网站教程-用腾讯云服务器搭建网站
如何用服务器建站,网站架设教程
注册域名,购买服务器。域名和服务器不一定需要在同一家服务商购买。但如果购买的是阿里云服务器或者腾讯云服务器,那就需要提供相对应的备案域名。怕麻烦的话,第一可以直接购买免备案的服务器,第二就是在网上找已备案域名
主机优惠教程
2019/04/02
8K0
如何用服务器建站,网站架设教程
云主机的数据库如何备份 云主机的数据库有何作用
有时候在面对一些突发情况的时候,如果数据没有进行备份,经常就会出现数据泄露的情况,或者数据丢失。所以在使用云主机的数据库的时候,使用备份能够让数据更加的安全,下面就将为大家介绍云主机的数据库如何备份。
用户8715145
2021/09/30
5.2K0
小白搭建博客教程-购买虚拟主机并搭建(2)
2016-06-1011:03:08 发表评论 18℃热度 一键部署工具选择 系统选择 连接虚拟主机 开始一键部署 目录 上一回说道:小白搭建博客教程之流程,这次趁着端午节写完它,也算是一个了结。 教程有4篇: 购买域名; 购买虚拟主机并搭建(Linux); 域名解析; wordpress等博客平台安装步骤。 下面开始第二篇: 虚拟主机选择 域名有了,接下来要有主体,一个虚拟主机,可以让你的博客或者网站放在虚拟主机上“跑”起来。域名就好比车牌号,虚拟主机就好比发动
timhbw
2018/05/03
15K0
虚拟主机怎么挑选?
选择虚拟主机建网站,预装了网站应用环境就和数据库环境,提供可视化操作的控制面板环境,操作简单。所以,很多站长和企业现在还是会首先使用虚拟主机。在挑选时,要注意以下几个方面。
用户6049522
2019/08/28
12.8K0
Discuz搬家教程[通俗易懂]
第一步:备份网站数据 进入后台—站长—数据库—备份,数据备份类型选择“Discuz!和 UCenter数据”,备份成功以后,数据自动保存在data文件夹下。
全栈程序员站长
2022/09/16
4.2K0
通过搭建wordpress博客来学习云服务器的详细使用方法
云服务器越来越普及,很多企业及个人都纷纷上云,从传统的虚拟主机或者托管服务器上把网站和应用迁移到腾讯云、阿里云、百度云等这些云服务器上。
尊托云数
2019/07/25
3.2K0
通过搭建wordpress博客来学习云服务器的详细使用方法
实战|记一次虚拟主机应急
由于传播、利用本公众号亿人安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号亿人安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
亿人安全
2023/12/11
2210
实战|记一次虚拟主机应急
推荐阅读
相关推荐
【玩转腾讯云】个人网站搭建详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验