力扣HOT 100-相交链表

发布时间:2026/11/11 20:58:36
力扣HOT 100-相交链表 题目链接160. 相交链表 - 力扣LeetCode题目截图我的题解/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ // 长度差对齐法 // 1. 分别遍历两个链表求出链表 A、链表 B 的长度 // 2. 让长链表的指针先走「两链表长度差」步 // 3. 之后两个指针同步一步一步往后移动 // 4. 当两个指针**内存地址相等**就是相交起始节点遍历完都不等返回 NULL。 class Solution { public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { // p1遍历链表Ap2遍历链表B ListNode *p1headA,*p2headB; // len1保存链表A长度len2保存链表B长度 int len10,len20; // 统计两个链表的节点个数 while(p1!NULL){ len1; p1p1-next; } while(p2!NULL){ len2; p2p2-next; } // 指针重置回各自链表头结点准备对齐起点我一开始忘了 p1headA,p2headB; // 保证p1永远指向更长的那条链表len1是长链表长度len2短链表长度 if(len2len1){ // 函数std :: swap是C 标准模板库STL中的内置函数 // 不返回任何内容它交换两个变量的值。 // 参数可以是任何数据类型swapab swap(p1,p2); swap(len1,len2); } // 计算两条链表的长度差 int chalen1-len2; // 长链表指针p1先走【长度差】步使得剩余未遍历的链表长度相等 while(cha--){ p1p1-next; len1--; } // 此时p1、p2后面剩余节点数相同同步向后走找第一个相同地址的节点 // 相交链表判断的是节点地址相等不是val值相等 while(len1--){ // 如果指针指向同一个节点找到相交起点直接返回 if(p1p2){ return p1; } len2--; p1p1-next; p2p2-next; } // 循环结束没有找到相同节点说明链表不相交返回NULL return NULL; } };

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询