LeetCode[142] 环形链表 II

news/2025/3/19 10:01:04/

哈希表匹配法

  1. set存储遍历过的节点
  2. 每次遍历查询set中是否有该节点
    • 有,则代表该节点为环的起点
    • 无,则插入set中,继续遍历链表
/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode *detectCycle(ListNode *head) {unordered_set<ListNode*> myset; // 存储遍历过的节点while(head) // head为空时代表链表内没有环{if(myset.find(head)!=myset.end()) // 如果节点已经被遍历过,则为环的起点return head;myset.insert(head);head = head->next;}return nullptr;}
};

快慢指针

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode *detectCycle(ListNode *head) {ListNode* slow = head; // 慢指针ListNode* fast = head; // 快指针while(fast != nullptr) // 快指针为空,则代表不存在环,到链表尾部了{slow = slow->next; // 满指针前进一步if(fast->next == nullptr)return nullptr;fast = fast->next->next;// 快指针前进两步// 如果快慢指针相遇,存在环,寻找环的开始节点if(slow == fast){ListNode* ptr = head;while(ptr!=slow){ptr = ptr->next;slow = slow->next;}return ptr;}}return nullptr;}
};

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

相关文章

【软件工程】01_软件工程的概述

1. 定义 软件是计算机系统中与硬件相互依存的另一部分&#xff0c;它是包括程序&#xff0c;数据及其相关文档的完整集合。 2. 软硬件失效 3. 软件危机 软件危机&#xff08;Software Crisis&#xff09;&#xff1a;指由于落后的软件生产方式无法满足迅速增长的计算机软件需求…

函数模板

一.什么是函数模板呢&#xff1f; 我们拿交换函数来举个例子。 我们要实现这个交换功能&#xff0c;我们可能得写两个函数。 使用函数重载虽然可以实现&#xff0c;但是有一下几个不好的地方&#xff1a; 1. 重载的函数仅仅是类型不同&#xff0c;代码复用率比较低&#xff0…

【Git学习笔记】Git分支管理策略及其结构原理分析

【Git学习笔记】Git分支管理策略及其结构原理分析 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;Git学习笔记 文章目录 【Git学习笔记】Git分支管理策略及其结构原理分析前言一.合并冲突二. 分支管理策略2.1 分支策略2.2 bug分支2.3 删除临…

Android Fresco 框架工具与测试模块源码深度剖析(五)

一、引言 在 Android 开发中&#xff0c;Fresco 是一个强大的图片加载和显示框架&#xff0c;由 Facebook 开源。它不仅提供了高效的图片加载和缓存机制&#xff0c;还配备了丰富的工具与测试模块&#xff0c;这些模块对于开发者在调试、优化以及确保框架的正确性方面起着至关…

网页制作17-Javascipt图像特效の鼠标经过图像震动

01、效果图 02、grammer用法 parseInt() 函数可解析一个字符串&#xff0c;并返回一个整数。 parseInt(string, radix) 如果 string 以 "0x" 开头&#xff0c;parseInt() 会把 string 的其余部分解析为十六进制的整数。如果 string 以 0 开头&#xff0c;那么 ECMASc…

学习Python如何高效处理CSV文件的技巧!

在Python中&#xff0c;处理CSV文件是一项非常常见的任务&#xff0c;特别是在数据分析和数据科学领域。CSV文件的全称是Comma-Separated Values&#xff0c;顾名思义&#xff0c;它以逗号为分隔符来存储表格数据。这种格式简单易读&#xff0c;也很方便进行数据的存储和交换。…

redis十大应用数据类型具体使用及其应用

Redis 提供了多种数据类型&#xff0c;每种数据类型都有其特定的应用场景。下面是 Redis 十大应用数据类型的具体使用及其应用场景&#xff1a; 1. 字符串 (String) 描述&#xff1a;Redis 中最基本的数据类型&#xff0c;用于存储简单的字符串数据。字符串可以是文本、数字&a…

JVAV面试-静态代理动态代理

前面已经更新了非常多的java基础知识和面试技巧&#xff0c;这一篇文章可以说是java面试中java基础最后的绝唱&#xff0c;也是基础知识的压轴戏&#xff0c;和前面反射内容息息相关。代理是一种设计模式&#xff0c;在每种语言上都有体现&#xff0c;但是能窥见一斑的人不多&a…