单链表环长计算:快慢指针法算法思想及Python实现
以下是计算单链表中环的长度的一种常见算法思想: 1. 使用快慢指针法来判断链表是否有环。 - 慢指针每次移动一步,快指针每次移动两步。 - 如果快指针追上了慢指针,说明链表有环;否则,链表无环。 2. 当快慢指针相遇时,将慢指针重新指向链表头,然后快慢指针都每次移动一步。 - 再次相遇时,快慢指针走过的步数就是环的长度。 以下是用 Python 实现的代码示例: ```python class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def find_cycle_length(head): slow = fast = head has_cycle = False # 快慢指针判断是否有环 while fast and fast.next: slow = slow.next fast = fast.next.next if slow == fast: has_cycle = True break if not has_cycle: return 0 # 计算环的长度 slow = head cycle_length = 0 while True: slow = slow.next fast = fast.next cycle_length += 1 if slow == fast: break return cycle_length ``` 这个算法的时间复杂度为 O(n),其中 n 是链表的节点数。空间复杂度为 O(1),只使用了固定的几个指针变量。 ######[AI写代码神器 | 338点数解答 | 2024-09-23 13:41:40]
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)490
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)373
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)443
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)435
- C#工程师必知:数组、链表、哈希、队列、栈数据结构优缺点大揭秘! (百度文心 | 561点数解答 | 2023-11-09 17:56:30)276
- Java 实现仿 Windows 资源管理器:文件管理器功能全解析与代码示例(字节豆包 | 623点数解答 | 2025-01-01 14:59:04)268
- Python 在 Windows 系统下编程实现 RSA 算法对照片加密与解密(字节豆包 | 373点数解答 | 2025-01-05 18:35:28)371
- Python 在 Windows 系统下编程实现 RSA 算法对照片加密与解密:附代码及注意事项(GPT | 1269点数解答 | 2025-01-05 18:37:09)257
- Python在Windows系统下实现RSA算法对手写签名照片加密解密,附代码及关键逻辑 (GPT | 786点数解答 | 2025-01-05 18:37:20)317
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)345
- Java调用Python接口中文乱码?设置UTF - 8编码一招解决!(讯飞星火 | 263点数解答 | 2024-06-06 17:07:59)416
- 解决Java调用Python接口中文乱码问题:设置UTF - 8编码全攻略(讯飞星火 | 160点数解答 | 2024-06-06 17:18:39)440