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

【算法随想录01】环形链表

题目:141. 环形链表
难度:EASY
在这里插入图片描述

代码

哈希表遍历求解,表中存储的是元素地址。

  • 时间复杂度 O ( N ) O(N) O(N),空间复杂度 O ( N ) O(N) O(N)
/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:bool hasCycle(ListNode* head) {unordered_set<ListNode*> seen;while (head != nullptr) {if(seen.count(head))  // 如果之前存储过该地址,证明之前访问过,有环。return true;seen.insert(head);head = head->next;}return false;}
};

快慢双指针,药到病除

  • 算法思想:当链表中存在环时,快指针会和慢指针相等。否则,慢指针永远不可能赶上快指针。
  • 时间复杂度: O ( N ) O(N) O(N),空间复杂度: O ( 1 ) O(1) O(1)
/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:bool hasCycle(ListNode* head) {if (head == nullptr || head->next == nullptr)return false;ListNode* slow = head;ListNode* fast = head->next;while (slow != fast && slow != nullptr && fast != nullptr) {slow = slow->next;if (fast->next == nullptr)return false;fast = fast->next->next;}if (slow == fast) return true;else return false;}
};
http://www.lryc.cn/news/298835.html

相关文章:

  • macOS Sonoma 14.3.1(23D60)发布
  • 2024-02-11 叮当鸭-平台系统-第三次重构-目标确定
  • Android7.0-Fiddler证书问题
  • Kotlin:单例模式(项目使用实例)
  • vue百度地图的和element输入框/v-region的联动
  • 搜索+哈希/平衡树,LeetCode 987. 二叉树的垂序遍历
  • 蓝桥杯每日一题之内存问题
  • Django前后端分离之后端实践2
  • windowsserver 2016 PostgreSQL9.6.3-2升级解决其安全漏洞问题
  • Java实现免税店商城管理系统 JAVA+Vue+SpringBoot+MySQL
  • 【Linux】信号
  • [NISACTF 2022]easyssrf
  • 在Linux系统中设置全局HTTP代理的步骤与技巧
  • 即席查询框架怎么选?
  • 【C语言】实现双向链表
  • Python操作MySQL基础
  • 【数学建模】【2024年】【第40届】【MCM/ICM】【E题 财产保险的可持续性】【解题思路】
  • SpringCloud--Eureka注册中心服务搭建注册以及服务发现
  • ansible shell模块 可以用来使用shell 命令 支持管道符 shell 模块和 command 模块的区别
  • qss的使用
  • archlinux 使用 electron-ssr 代理 socks5
  • macos安装local模式spark
  • 机器学习算法之支持向量机(SVM)
  • 线性判别分析(LDA)
  • Vue 前置导航
  • 串行通信,并行通信,波特率,全双工,半双工,单工等通信概念
  • 鸿蒙系统进一步学习(一):学习资料总结,少走弯路
  • 异步复位同步释放原则
  • M1 Mac使用SquareLine-Studio进行LVGL开发
  • web3知识体系汇总