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

LeetCode 热门100题-回文链表

题目描述:

给你一个链表的头节点 head ,判断链表中是否有环。

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。

如果链表中存在环 ,则返回 true 。 否则,返回 false 。

示例 1:

输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。

逻辑:

 哈希集合和快慢指针。哈希集合就不用多说,挨个将节点插入集合中的同时,查询集合中是否有当前节点。快慢指针的解释感觉下面的比较形象,相对速度。

答疑
问:兔子会不会「跳过」乌龟,从来不会和乌龟相遇呢?

答:这是不可能的。如果有环的话,那么兔子和乌龟都会进入环中。这时用「相对速度」思考,乌龟不动,兔子相对乌龟每次只走一步,这样就可以看出兔子一定会和乌龟相遇了。

作者:灵茶山艾府
链接:https://leetcode.cn/problems/linked-list-cycle/solutions/1999269/mei-xiang-ming-bai-yi-ge-shi-pin-jiang-t-c4sw/
 

#if 1
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;
    }
};

#endif
#if 0
class Solution {
public:
    bool hasCycle(ListNode* head) {
        ListNode* slow = head;
        ListNode* fast = head; // 乌龟和兔子同时从起点出发
        while (fast && fast->next) {
            slow = slow->next; // 乌龟走一步
            fast = fast->next->next; // 兔子走两步
            if (fast == slow) { // 兔子追上乌龟(套圈),说明有环
                return true;
            }
        }
        return false; // 访问到了链表末尾,无环
    }
};

#endif


http://www.kler.cn/a/565887.html

相关文章:

  • DeepSeek开源周,第四弹再次来袭,优化并行策略
  • < 自用文儿 > Gobuster 暴力扫描工具与 SecLists 安全测试词表集合
  • 【AI深度学习基础】NumPy完全指南入门篇:核心功能与工程实践(含完整代码)
  • 【大语言模型,数据向量化】向量化时使用本地HuggingFaceEmbeddings失败,调用embeddings时仍会去Huggingface下载的解决方法
  • DeepSeek后训练:监督微调和强化学习
  • Spring Data JPA 中的分页实现:从 BasePage 到 Pageable
  • 网络流算法: 最大流算法
  • 【无标题】ABP更换MySql数据库
  • Wireshark:自定义类型帧解析
  • SpringSecurity踢出指定用户
  • 【AIGC系列】5:视频生成模型数据处理和预训练流程介绍(Sora、MovieGen、HunyuanVideo)
  • SpringBoot 3.0微服务架构实战:从设计到部署
  • 【Blender】三、材质篇--3.4 凹凸感和置换形变
  • 如何使用useEffect模拟组件的生命周期?
  • Opencv 阈值与平滑处理
  • API网关相关知识点
  • 深度学习开源数据集大全:从入门到前沿
  • [文献阅读] DCEC - Deep Clustering with Convolutional Autoencoders
  • 在ubuntu 24.04.2 通过 Kubeadm 安装 Kubernetes v1.31.6
  • Web1、Web2 与 Web3 的核心区别