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

Leetcode-141.环形链表

dict和set

1. 结构上的区别:

类型键(Key)值(Value)示例
dict{'a': 1, 'b': 2}
set没有{'a', 'b'}
  • dict 是**键值对(key-value)**的集合。

  • set只有键(key)没有值的一组唯一元素。


2. 用途上的区别:

  • dict 用于建立键与值的映射,例如地址到位置、用户名到ID等。

  • set 用于快速查找是否存在去重集合运算等,例如判断某个元素是否出现过。


3. 操作上的区别:

dict 常见操作:
d = {'x': 1, 'y': 2}
d['z'] = 3             # 添加键值对
value = d.get('x')     # 查找键对应的值
del d['y']             # 删除键值对
set 常见操作:
s = {'a', 'b'}
s.add('c')             # 添加元素
s.remove('a')          # 删除元素
exists = 'b' in s      # 判断是否存在

4. 底层实现的共同点和不同点:

  • 相同点:都使用哈希表,所以查找、插入、删除的时间复杂度平均为 O(1)O(1)。

  • 不同点:

    • dict 哈希表存储的是 (key, value) 对,插入更复杂。

    • set 只存 key,没有 value,占用空间略小,操作略快。


image.png


---```python
# Definition for singly-linked list.# class ListNode:#     def __init__(self, x):#         self.val = x#         self.next = None
class Solution:def hasCycle(self, head: Optional[ListNode]) -> bool:seen=set()while head:if head in seen:return Trueseen.add(head)head=head.nextreturn False

思路:

利用集合 seen 记录遍历过程中出现过的节点引用(即内存地址)。若遍历某个节点时发现它已经在 seen 中,说明这个节点之前已经访问过,即链表存在环。否则,将当前节点加入集合并继续向后遍历。


🧠解题过程:

  1. 创建一个空集合 seen

  2. 从头节点 head 开始,逐个遍历每个节点;

  3. 如果当前节点 head 已存在于 seen 中,说明链表出现了环,返回 True

  4. 否则将当前节点加入集合,继续向下一个节点遍历;

  5. 若遍历到 None,说明链表无环,返回 False

http://www.dtcms.com/a/311123.html

相关文章:

  • Rust: 工具链版本更新
  • Linux网络-------4.传输层协议UDP/TCP-----原理
  • Ajax——异步前后端交互提升OA系统性能体验
  • python chardet文本编码识别代码
  • Java单元测试和设计模式
  • uniapp 富文本rich-text 文本首行缩进和图片居中
  • Day 29: 复习
  • 音视频学习(四十五):声音的产生
  • 数据集-目标检测系列- 地球仪 数据集 globe>> DataBall
  • 前端应用权限设计面面观
  • 网络基础实操篇-05-路由基础-最佳实践
  • 【机器学习】非线性分类算法(上):KNN(基于距离相似度)与朴素(特征独立)贝叶斯(基于概率统计)
  • MybatisPlus-逻辑删除
  • 【ElementPlus】深入探索ElementPlus:前端界面的全能组件库
  • 【Conda】配置Conda镜像源
  • 【Linux】vim—基操
  • 网易云音乐硬刚腾讯系!起诉SM娱乐滥用市场支配地位
  • 【深度学习②】| DNN篇
  • SmartCLIP:具有识别保证的模块化视觉-语言对齐
  • 基于OAuth2与JWT的微服务API安全实战经验分享
  • Java 垃圾回收机制:自动化内存管理的艺术与科学
  • Python 程序设计讲义(54):Python 的函数——函数概述
  • Linux iptables防火墙操作
  • 一种基于入侵杂草优化算法(IWO)的聚类算法,并与K-Means、高斯混合模型(GMM)进行对比,Matlab
  • 网安-中间件(updating..)
  • HarmonyOS NEXT系列之定制化构建制品
  • HarmonyOS 开发:基于 ArkUI 实现复杂表单验证的最佳实践
  • 电子电气架构 --- 汽车网络安全概述
  • lumerical——布拉格光栅(2)
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现道路车辆事故的检测识别(C#代码UI界面版)