【LeetCode每日一题】——141.环形链表

news/2024/11/29 2:32:07/

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【解题思路】
  • 七【题目提示】
  • 八【题目进阶】
  • 九【时间频度】
  • 十【代码实现】
  • 十一【提交结果】

一【题目类别】

  • 链表

二【题目难度】

  • 简单

三【题目编号】

  • 141.环形链表

四【题目描述】

  • 给你一个链表的头节点 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
    • 解释:链表中没有环。

六【解题思路】

  • 经典的快慢指针的问题
  • 慢指针走一步,快指针走两步
  • 如果由环,那么快指针和慢指针都会在这个环内“跑”,但是快指针走的快,所以说如果有环,快慢指针一定会相遇
  • 如果快慢指针相遇说明有环,否则说明没环
  • 如果有环返回true,否则返回false即可

七【题目提示】

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

八【题目进阶】

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

九【时间频度】

  • 时间复杂度:O(n)O(n)O(n),其中nnn为链表的长度
  • 空间复杂度:O(1)O(1)O(1)

十【代码实现】

  1. Java语言版
package LinkedList;/*** @Author: IronmanJay* @Description: 141.环形链表* @CreateTime: 2022-12-05  15:39*/
public class p141_LinkedListCycle {int val;p141_LinkedListCycle next;public p141_LinkedListCycle(int val) {this.val = val;}public p141_LinkedListCycle(int val, p141_LinkedListCycle next) {this.val = val;this.next = next;}public static void main(String[] args) {p141_LinkedListCycle node1 = new p141_LinkedListCycle(3);p141_LinkedListCycle node2 = new p141_LinkedListCycle(2);p141_LinkedListCycle node3 = new p141_LinkedListCycle(0);p141_LinkedListCycle node4 = new p141_LinkedListCycle(-4);node1.next = node2;node2.next = node3;node3.next = node4;node4.next = node2;boolean res = hasCycle(node1);System.out.println("res = " + res);}public static boolean hasCycle(p141_LinkedListCycle head) {p141_LinkedListCycle slow = head;p141_LinkedListCycle fast = head;while (fast != null && fast.next != null) {slow = slow.next;fast = fast.next.next;if (slow == fast) {return true;}}return false;}}
  1. C语言版
#include<stdio.h>
#include<stdbool.h>struct ListNode {int val;struct ListNode *next;
};bool hasCycle(struct ListNode *head)
{struct ListNode* slow = head;struct ListNode* fast = head;while (fast != NULL && fast->next != NULL){slow = slow->next;fast = fast->next->next;if (slow == fast){return true;}}return false;
}/*主函数省略*/

十一【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. C语言版
    在这里插入图片描述


http://www.ppmy.cn/news/1969.html

相关文章

西北工业大学算法实验机试复习

&#x1f600;大家好&#xff0c;我是白晨&#xff0c;一个不是很能熬夜&#x1f62b;&#xff0c;但是也想日更的人✈。如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一下&#x1f440;白晨吧&#xff01;你的支持就是我最大的动力&#xff01;&#x1f4…

深入学习Android

我通过阅读邓凡平前辈的《深入理解Android》&#xff0c;为了加深学习作此学习笔记。虽然是邓老师2011著的书&#xff0c;但其中的安卓框架还是可以学习的。另老师的csdn地址在&#xff1a;阿拉神农的博客_CSDN博客-Android开发系列,深入理解Android,移动万态领域博主tips:阅读…

python简单实现网络爬虫

前言 在这一篇博客中&#xff0c;我会用python来实现一个简单的网络爬虫。简单的爬取一下一些音乐网站、小说网站的标题、关键字还有摘要&#xff01;所以这个爬虫并不是万能爬&#xff0c;只针对符合特定规则的网站使用。&#xff08;只使用于爬标题、关键字和摘要的&#xff…

【OpenCV学习】第5课:图像模糊(均值滤波,高斯滤波)

参考文章链接:https://blog.csdn.net/qq_30460949/article/details/121990114 仅自学做笔记用,后续有错误会更改 理论 1.Smooth/blur是图像处理中最简单和常用的操作之一 2.使用该操作的原因之一就是为了给图像预处理的时候减低噪声 3.使用Smooth/Blur操作其背后是数学的卷积…

小红书和达人合作步骤是什么?对接达人合作流程分享

现在小红书作为不错的内容分享媒体&#xff0c;小红书内容分享的核心便是达人。许多商家也想知道该如何与达人合作。今天&#xff0c;就来和大家一起分享一下这个问题&#xff0c;带领大家了解并解析小红书和达人合作步骤是什么?并给大家解析一下期间有哪些注意事项。 其实商家…

使用setuptools构建python包

python包分发方式 源码包分发&#xff1a; 源码包安装过程是先解压&#xff0c;再编译。最后才安装&#xff0c;所以其是跨平台的&#xff0c;由于每次安装都需要进行编译&#xff0c;相对于二进制包安装方式来说安装速度较慢。 解压——编译——安装 源码包本质上是一个压缩…

LINUX下看门狗的使用

0、基本原理 使能看门狗&#xff0c;并配置看门狗&#xff0c;周期性的给看门狗设备写入数据即为喂狗。 1、使能硬看门狗 内核和设备树使能看门狗&#xff0c;具体的需要参考对应的cpu文档对看门狗的描述。 2、应用程序喂狗 参考应用程序源码如下&#xff1a; #include &…

【入门】初识深度学习

文档背景 机器学习和深度学习的概念十分火热。听上去也很难&#xff0c;不慌&#xff0c;有时候就需要行动在前脑子在后。不管&#xff0c;干就完啦。 前言 人工智能&#xff08;ArtificialIntelligence&#xff0c;AI&#xff09;是最宽泛的概念&#xff0c;是研发用于模拟、延…