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

【刷题笔记9.25】LeetCode:相交链表

LeetCode:相交链表

一、题目描述

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、分析及代码

方法一:使用哈希Set集合

(注意:集合中存储的是ListNode节点的地址,并非数值***,换句话说即使链表A和链表B都有值为1的节点,但实质上其还是两个不同的节点,因为内存地址是不一样的,只有都指向同一个相交的节点了其内存地址才是相同的)

判断两个链表是否相交,可以使用哈希集合存储链表节点。

首先遍历链表 headA,并将链表 headA 中的每个节点加入哈希集合中。然后遍历链表 headB,对于遍历到的每个节点,判断该节点是否在哈希集合中:

  • 如果当前节点不在哈希集合中,则继续遍历下一个节点;
  • 如果当前节点在哈希集合中,则后面的节点都在哈希集合中,即从当前节点开始的所有节点都在两个链表的相交部分,因此在链表 headB中遍历到的第一个在哈希集合中的节点就是两个链表相交的节点,返回该节点。
  • 如果链表 headB 中的所有节点都不在哈希集合中,则两个链表不相交,返回 null。

上代码:

public ListNode getIntersectionNode1(ListNode headA, ListNode headB) {if (headA == null || headB == null) {return null;}//声明集合SetSet<ListNode> set = new HashSet<>();ListNode temp = headA;while (temp != null) {set.add(temp);temp = temp.next;}temp = headB;while (temp != null) {if (set.contains(temp)) {return temp;}temp = temp.next;}return null;}

方法二:两层while循环遍历

(注意:使用此方法注意while循环的判断条件是对headA 和 headB判断而不是headA.next 和 headB.next,因为会有这种情况:链表A和链表B都只要一个节点且为同一个节点的情况

在这里插入图片描述


上代码:

public ListNode getIntersectionNode2(ListNode headA, ListNode headB) {if (headA == null || headB == null) {return null;}ListNode p = headA;while (p != null) {ListNode q = headB;while (q != null) {if (p == q) {return p;}q = q.next;}p = p.next;}return null;}
http://www.lryc.cn/news/175524.html

相关文章:

  • 打造本地紧密链接的开源社区——KCC@长沙开源读书会openKylin爱好者沙龙圆满举办...
  • Python 笔记03(多线程)
  • mysql-4:SQL的解析顺序
  • 如何通过优化Read-Retry机制降低SSD读延迟?
  • matlab自动生成FPGA rom源码
  • 消息队列(RabbitMQ+RocketMQ+Kafka)
  • python判断语句
  • C# 虚方法
  • 微信小程序,动态设置三级联动, 省市区街道
  • Learn Prompt- Midjourney 图片生成:Image Prompts
  • 基于微信小程序的健身房私教预约平台设计与实现(源码+lw+部署文档+讲解等)
  • 安卓Compose(二)
  • TCP 和 UDP哪个更好
  • Spring Boot 如何实现单点登录(SSO)
  • C#中的(++)和(--)运算符
  • SVG鼠标漫游
  • 关于Github报SSL_ERROR_SYSCALL的解决方案
  • Redis 集群搭建教程
  • 图形处理软件Photoshop Elements 2020 mac中文版 ps简化版
  • opencv for unity package在unity中打开相机不需要dll
  • [Linux入门]---进程状态
  • 腾讯mini项目-【指标监控服务重构】2023-08-29
  • opencv 常用的滤波器及应用技巧
  • 【PyTorch攻略(1/7)】 张量基本语法
  • 什么是Jmeter ?Jmeter使用的原理步骤是什么?
  • Mac 通过 brew安装的 ffmpeg 切换版本
  • 【Spring Boot】实战:实现数据缓存框架
  • MySQL数据类型之JSON
  • nginx_0.7.65_00截断_nginx解析漏洞
  • 建站百科:HTTP返回状态码是什么?