160. 相交链表

思路一:使用set用到了额外的内存,没有达到题目要求

/*** 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) {unordered_set<ListNode*> myset;while(headA!=nullptr){myset.insert(headA);headA = headA->next;}while(headB!=nullptr){if(myset.find(headB)!=myset.end()){return headB;}else {headB = headB->next;}}return nullptr;}
};

思路二:

/**定义两个指针, 第一轮让两个到达末尾的节点指向另一个链表的头部, 最后如果相遇则为交点(在第一轮移动中恰好抹除了长度差)
两个指针等于移动了相同的距离, 有交点就返回, 无交点就是各走了两条指针的长度
**/
// 在这里第一轮体现在pA和pB第一次到达尾部会移向另一链表的表头, 而第二轮体现在如果pA或pB相交就返回交点, 不相交最后就是null==null
/*** 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) {ListNode *A = headA, *B = headB;/**定义两个指针, 第一轮让两个到达末尾的节点指向另一个链表的头部, 最后如果相遇则为交点(在第一轮移动中恰好抹除了长度差)两个指针等于移动了相同的距离, 有交点就返回, 无交点就是各走了两条指针的长度**/// 在这里第一轮体现在pA和pB第一次到达尾部会移向另一链表的表头, 而第二轮体现在如果pA或pB相交就返回交点, 不相交最后就是null==nullwhile(A!=B){A = A!=nullptr ? A->next : headB;B = B!=nullptr ? B->next : headA;}return A;}
};

LeetCode-链表-160. 相交链表相关推荐

  1. LeetCode Algorithm 160. 相交链表

    160. 相交链表 Ideas 这题之前左神算法课的时候也讲过,那是一个带环的相交链表,不过原理都是一样的. 双指针,a指针先沿着headA开始走,走到头之后开始沿着headB继续走,b指针先沿着he ...

  2. 【Leetcode】拿捏链表(四)——160. 相交链表、141. 环形链表、142. 环形链表 II

    作者:一个喜欢猫咪的的程序员 专栏:<Leetcode> 喜欢的话:世间因为少年的挺身而出,而更加瑰丽.                                  --<人民 ...

  3. 【LeetCode】【HOT】160. 相交链表

    [LeetCode][HOT]160. 相交链表 文章目录 [LeetCode][HOT]160. 相交链表 package hot;class ListNode{int val;ListNode n ...

  4. 160. 相交链表 golang

    160. 相交链表 计算两个链表长度,让长的先走到两个链表一样长,然后找交点 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:inters ...

  5. Leetcode 160.相交链表

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

  6. LeetCode实战:相交链表

    背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Write a pro ...

  7. leetcode题解之相交链表

    ''' 编写一个程序,找到两个单链表相交的起始节点. 注意: 如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构. 可假定整个链表结构中没有循环. 程序尽量满足 O(n) ...

  8. 每日一道 LeetCode (36):相交链表

    每天 3 分钟,走上算法的逆袭之路. 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub: https://github.com/meteor1993/LeetCode Gitee ...

  9. 文巾解题 160. 相交链表

    1 题目描述 2 解题思路 2.1 哈希表 遍历listA,把每个节点(以及后继节点)放入一个list中.遍历完A之后遍历B,如果B的某个节点(以及后继节点)在这个list中,那么我们就找到了相交的部 ...

最新文章

  1. 免费Java高级工程师学习资源,使用指南
  2. tf.unstack\tf.unstack
  3. oracle安装实训心得,oracle数据库实训心得.docx
  4. ServiceStack.Redis 请求次数6000次异常
  5. 在IIS中寄存已有WCF服务
  6. java生成excel文件
  7. 获利上亿!一程序员主犯非法挖矿被抓
  8. 把VS Code打造成Java开发IDE,也挺爽!
  9. 团队文化之舒适区和挑战区
  10. vb6源码 ymodem_VB爱好者乐园(VBGood)
  11. 2019年上海理工大学《高等代数》试题和答案——解题人(蔡宇)
  12. 微信分身服务器验证失败咋办,微信好友验证发送失败原因分析及解决方法汇总...
  13. 99定时器设计c语言,51单片机写的曝光定时器C语言程序
  14. lisp 焊接符号标注_焊接符号标注及表示方法-详解aws焊接符号、钢结构焊接符号含义大全...
  15. uni-app 异形轮播
  16. 软件测试学习小记 note2
  17. dir命令只显示文件名
  18. 正则表达式[^\\.]
  19. 张小龙:微信十年的产品思考
  20. [codeforces 1343B] Balanced Array 奇+奇=偶,奇+偶=奇,偶+偶=偶

热门文章

  1. wsl遇到问题The repository ‘http://ppa.launchpad.net/ubuntu-desktop/ubuntu-make/ubuntu focal Release‘解决方法
  2. PAT甲级1067 Sort with Swap(0, i):[C++题解]此题不是很懂!!
  3. SpingBoot中使用MyBatis和pagehelper实现数据的增删改查和分页
  4. SpringBoot用容器IoC管理Bean
  5. c语言调用shell命令一 popen使用以及获取命令返回值
  6. 人体肺活量测试软件,人体肺活量怎么测试
  7. java磁盘读写b 树_原来你是这样的B+树
  8. Qt基于文本协议的网络应用开发
  9. 继承关系中的拷贝构造函数和赋值操作重载函数分析
  10. Qt中的QTimer