160. 相交链表/c++

160. 相交链表 - 力扣(LeetCode)

题解:

cpp 复制代码
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        unordered_set<ListNode*> visited; // ✅ 存指针
        
        // 遍历链表 A,记录所有节点地址
        while (headA) {
            visited.insert(headA); // ✅ 插入指针
            headA = headA->next;
        }
        
        // 遍历链表 B,检查是否有节点已在 A 中出现
        while (headB) {
            if (visited.find(headB) != visited.end()) { // ✅ 查找指针
                return headB; // 找到交点
            }
            headB = headB->next;
        }
        
        return nullptr; // C++ 推荐用 nullptr 而非 NULL
    }
};

注意

cpp 复制代码
unordered_set<ListNode> unset;  // ❌ 编译错误!
unordered_set<ListNode*> unset;  // ✅ 存储指针
  • ListNode 是自定义结构体,没有默认的哈希函数和相等比较函数
  • C++ 标准库无法对 ListNode 对象进行哈希或比较
  • 会报你之前看到的错误:"call to implicitly-deleted default constructor"
相关推荐
Severus_black2 小时前
【C++初阶】list使用及相关实现,思路顺滑流畅!
c语言·数据结构·c++·stl·list
二本咕咕-机械转码4 小时前
FreeRTOS深入解析(八)IPC机制之FromISR详解
数据结构·单片机·链表
1-1=06 小时前
C# 数据结构和特殊类型
数据结构·c#·.net·.netcore
希和20276 小时前
C语言程序设计题|有序数组插入数字冒泡排序
c语言·数据结构·算法
布莱克60516 小时前
C++ 中 map 的 insert 与 emplace:key 已存在时会覆盖吗?
开发语言·数据结构·c++·算法·map
D e re k ZH19 小时前
C++ 系统学习手记:从语法细节到工程实践
开发语言·数据结构·c++·算法
zh_xuan1 天前
LeeCode 496. 下一个更大元素I
数据结构·算法·栈·单调栈
白杨尚青1 天前
C++进阶篇(五):红黑树——四条规则、三种插入情况与旋转变色
开发语言·数据结构·c++·stl·红黑树·平衡二叉树
likexuec2 天前
数据结构(2)
数据结构
D e re k ZH2 天前
C++ 标准库算法全景指南
数据结构·c++·算法