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

day13 leetcode-hot100-22(链表1)

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

1.哈希集合HashSet

思路

(1)将A链的所有数据存储到HashSet中。

(2)遍历B链,找到是否在A中存在。

具体代码
/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {HashSet<ListNode> set = new HashSet<>();while(headA!=null){set.add(headA);headA=headA.next;}while(headB!=null){if(set.contains(headB)){return headB;}else{headB=headB.next;}}return null;}
}

2.双指针

思路

(1)如果A和B相交,那么假设相交的部分为c,不相交的部分分别为a和b。

(2)我们用两个指针分别从A链与B链开始遍历,如果遍历到尾部就从另一条链再遍历。

(3)以A链为例,其走过的路:a+c+b再次到c

(4)以B链为例,其走过的路:b+c+a再次到c

以上述结论为基础,我们可以判断节点A与节点B是否相等,如果相等则返回,如果不相等最后都输出null,然后结束。

具体代码
/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode pA=headA,pB=headB;while(pA!=pB){pA = pA==null ? headB:pA.next;pB = pB==null ? headA:pB.next;}return pA;}
}

http://www.xdnf.cn/news/9886.html

相关文章:

  • cf2059B
  • 【模板-指南】
  • 12:遨博机器人开发
  • 软考-系统架构设计师-第七章 软件工程基础知识
  • 学生管理系统V2.0
  • PCA主成分分析与Python应用
  • View的工作流程——measure
  • Linux实操篇-进程管理
  • 防火墙ASPF(针对应用层包过滤技术) FTP(主动模式)
  • 为什么我开始用 Data.olllo 做数据处理了?
  • langchain框架-对比分析chain的三种实现方式
  • 【二】10.L并发与竞争机制
  • HOW - 简历和求职面试宝典(三)
  • Python多版本共存指南:使用虚拟环境实现不同Python版本的灵活切换
  • 【CBAP50技术手册】#29 Mind Mapping(思维导图):BA(业务分析师)的“思维引擎”
  • Debian:自由操作系统的精神图腾与技术基石
  • Python 基于卷积神经网络手写数字识别
  • (二)视觉——工业镜头(以海康威视为例)
  • 罗马-华为
  • CC攻击的种类与特点解析
  • ElementUI表单验证指南
  • Spring Boot的启动流程,以及各个扩展点的执行顺序
  • AI视频生成加速器:Medeo如何用零门槛技术重塑内容创作
  • 【python爬虫】利用代理IP爬取filckr网站数据
  • UFSH2024 程序化生成 笔记
  • GJOI 5.27 题解
  • 增广拉格朗日时空联合规划ALTRO-iLQR (一)
  • 2.qml使用c++
  • 【C++基础知识】RAII的一个简单示例讲解
  • MySQL8.4组复制