解题思路:

先将两个链表构建成一个环,定义两个快慢指针,当它们相遇时,将fast指针从头结点往后遍历,每次走一步,当这两个指针再次相遇时,该节点就是相交节点。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {if(!headA || !headB) return NULL;//先将两个链表连起来,构造一个环ListNode* tmp = headA;while(tmp && tmp->next)tmp = tmp->next;tmp->next = headB;//headA作为链表的头结点ListNode* slow = headA;ListNode* fast = headA;while(fast && fast->next){slow = slow->next;fast = fast->next->next;if(slow == fast) break;}if(!fast || !fast->next) {tmp->next = NULL; //把链表结构复原return NULL; //没有相交节点}//让fast指针指向头结点fast = headA;while(fast != slow){// cout<< slow->val;slow = slow->next;fast = fast->next;}tmp->next = NULL; //把链表结构复原return fast;}
};

Leetcode 160. 相交链表 解题思路及C++实现相关推荐

  1. Leetcode 160.相交链表

    难度:简单 频率:140 题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表不存在相交节点,返回 null . 解题方法:双指针遍历 解题 ...

  2. leetcode 160. 相交链表(双指针)

    给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null . 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结 ...

  3. Leetcode 148. 排序链表 解题思路及C++实现

    解题思路: 对链表进行归并排序,使用 fast 和 slow 两个指针,遍历一次链表,就能将链表切分为两半,然后使用归并排序的方法. /*** Definition for singly-linked ...

  4. LeetCode 160. 相交链表

    文章目录 1. 题目信息 2. 解题 2.1 计算长度 2.2 交替遍历 1. 题目信息 编写一个程序,找到两个单链表相交的起始节点. <剑指Offer>同题:面试题52. 两个链表的第一 ...

  5. Leetcode 206. 反转链表 解题思路及C++实现

    解题思路: 利用三个指针 left.right.tmp.left指向的是每一步反转之后的头结点,right指向的是当前需要反转的节点,tmp指向的是下一步需要反转的节点. /*** Definitio ...

  6. Leetcode 141. 环形链表 解题思路及C++实现

    解题思路: 定义快慢两个指针,当指针所指节点是同一个时,说明出现了环. /*** Definition for singly-linked list.* struct ListNode {* int ...

  7. [leetcode]160.相交链表

    给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null . 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结 ...

  8. LeetCode 160. 相交链表(c++实现)

    思路 统计两个链表的长度,并记录两个链表尾结点,判断是否相同. 比较链表长度,让较长的链表走|lenA-lenB|步数,使得两个俩表剩余部分长度相等 两个链表一起走,走到相同节点,即相交节点. 实现 ...

  9. Leetcode 160 相交链表 (每日一题 20210802)

    给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null .图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中 ...

最新文章

  1. php 过滤css样式,PHPCMS v9过滤采集内容中的CSS样式
  2. 一。深入了解JDK1.8 从Package java.io开始
  3. python ord()与chr()用法以及区别
  4. (EM算法)The EM Algorithm
  5. android 模拟器横竖屏切换
  6. ZigBee网络架构详解
  7. 机器学习】LDA线性判别分析
  8. 【C语言期末实训】学生学籍管理系统
  9. 【UIKit】UITableView.06
  10. C#中根据传入的字符串字段返回实体Lambda表达式
  11. 深入分析自定义表单验证与Cookies
  12. php 有道翻译api,php有道翻译api调用方法实例
  13. java 计算两点间的距离_java计算两点间的距离的两种方法
  14. 金蝶KIS专业版K3即时库存查询SQL语句SQLServer
  15. 面试方法-麦可利兰的能力素质模型
  16. Web漏洞挖掘(一)登录认证模块的暴力破解实例
  17. pandas数据合并之pd.concat()用法
  18. C/C++ MessageBox() 弹窗的用法
  19. python分析红楼梦中人物形象_红楼梦人物形象分析+赏析_作文
  20. Response.WriteFile 无法下载大文件解决方法

热门文章

  1. php 单例模式 序列化,php设计模式(二)单例模式
  2. SpringMVC总结三:请求Controller返回视图类型以及请求方式、参数介绍
  3. 如何理解c和c ++的复杂类型声明 (转)
  4. [EasyTao(道)系列文章之一]太极之道
  5. SQLSERVER数据库日志文件过大,如何压缩并定期清理 ?
  6. GAE Python 2009-3-22
  7. Android+Eclipse修改包路径
  8. vue中v-for循环如何将变量带入class的属性名中
  9. python编程规范
  10. 手把手教你安装Navicat——靠谱的Navicat安装教程