首页 > 其他分享 >141. 环形链表

141. 环形链表

时间:2023-10-08 10:57:49浏览次数:36  
标签:head slowPtr 141 环形 next 链表 pos fastPtr

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

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。

如果链表中存在环 ,则返回 true 。 否则,返回 false 。

 

示例 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 或者链表中的一个 有效索引 。

 

进阶:你能用 O(1)(即,常量)内存解决此问题吗?

 

本题可以使用快慢指针的方式解题,可以转换为追及相遇问题,fastPtr一次走两个单位,slowPtr一次走一个单位,当他们走进环后总会相遇;

 

/**
 * 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 slowPtr = head, fastPtr= head;
        while(fastPtr.next!=null&& fastPtr.next.next!=null){
            slowPtr=slowPtr.next;
            fastPtr=fastPtr.next.next;
            if(slowPtr==fastPtr)
            return true;
        } 
        return false;
    }
}

 

标签:head,slowPtr,141,环形,next,链表,pos,fastPtr
From: https://www.cnblogs.com/buguniaogugu/p/17748347.html

相关文章

  • 2023-2024-1 20231413 《计算机基础与程序设计》第二周学习总结
    班级:2023-2024-1-计算机基础与程序设计作业要求:2023-2024-1《计算机基础与程序设计》教学进程目标:自学教材:计算机科学概论第1章并完成云班课测试《C语言程序设计》第1章并完成云班课测试教材学习内容总结:再次阅读了《计算机科学概论》第1章,更加了解了计算机与计算系统;对C语......
  • 2023-2024-1 20231416 《计算机基础与程序设计》第二周学习总结
    计算机科学概论:  计算系统由硬件 软件和数据组成 是一种动态实体 动态即代表具有一定的灵活度 而实体代表其拥有一定的份量 而计算系统的分层也如同洋葱一般层层覆盖 信息隐藏和抽象两个概念也拥有很高的相似度 只不过抽象更注重于外部 信息隐藏更注重程序内部 计算机......
  • 2023-2024-1 20231411 《计算机基础与程序设计》第二周学习总结
    作业信息这个作业属于哪个课程2022-2023-1-计算机基础与程序设计这个作业要求在哪里2022-2023-1计算机基础与程序设计第一周作业这个作业的目标初步熟悉课本以及对所学内容有所思考作业正文https://www.cnblogs.com/123lyx/p/17747569.html教材学习内容总......
  • 03-链表常见六个操作
    我的想法:问题:正确思路:适用场景:代码//题目:/**学习到:*写代码过程中:*1.类成员变量使用'_',变量名前后都可*2.要弄清出index(第几个元素,从0开始)与_size(链表中元素个数)的意义*2.*代码逻辑:*1.写代码之前,一定要弄清出目的,以及实现他需要的东西,条件*2.操作前......
  • 2023-2024-1 20231419 《计算机基础与程序设计》第二周学习总结
    2023-2024-120231419《计算机基础与程序设计》第二周学习总结作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK02这个作业的目标预习《计算机科学概......
  • 01-建立静态链表
    一、实现思路1、声明一个结构体类型,成员有数据类型和指针变量next;2、将第一个结点的起始地址赋给头指针head,将第二个结点的起始地址赋给第一个结点的next成员,将第三个结点的起始地址赋值给第二个结点的next成员。第三个结点的next成员赋值为NULL,这样就形成了链表。二、程序设计......
  • Leetcode刷题83. 删除排序链表中的重复元素
    给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。示例1:输入:head=[1,1,2]输出:[1,2]示例2:输入:head=[1,1,2,3,3]输出:[1,2,3] 提示:链表中节点数目在范围 [0,300] 内-100<=Node.val<=100题目数......
  • 2023-2024-1 20231415吴昕洋 《计算机基础与程序设计》第一周学习总结
    这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求是什么2023-2024-1-计算机基础与程序设计第一周作业这个作业的目标简单浏览《计算机概论》,提出疑问,并尝试解决问题作业正文https://i.cnblogs.com/posts/edit教材内容·学习总结  ......
  • 10.4 国庆 环形dp与基环树笔记
    1.知识点环形dp环形dp的概念•环形dp与基环树在许多环形结构的问题中,我们可以在环中从某个位置把环断开,把这个环变成线性的,然后进行\(dp\)等操作。•把能通过上述操作解决的环形问题称作"可拆解的环形问题"。环形dp的两种策略•第一次在任意位置把环断开成链,按照......
  • 01 链表
    链表的基本实现与应用,差不多可以了学生通讯录管理系统#include<stdio.h>#include"stdlib.h"#include"string.h"#defineMAX10//链表typedefstructNode{intid,telenum;charname[20];intlength;structNode*next;}Node,*LinkList;......