相交链表

题干

编写一个程序,找到两个单链表相交的起始节点。

如下面的两个链表:

在节点 c1 开始相交。

示例 1:

输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3
输出:Reference of the node with value = 8
输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。

示例 2:

输入:intersectVal = 2, listA = [0,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
输出:Reference of the node with value = 2
输入解释:相交节点的值为 2 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [0,9,1,2,4],链表 B 为 [3,2,4]。在 A 中,相交节点前有 3 个节点;在 B 中,相交节点前有 1 个节点。

示例 3:

输入:intersectVal = 0, listA = [2,6,4], listB = [1,5], skipA = 3, skipB = 2
输出:null
输入解释:从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。由于这两个链表不相交,所以 intersectVal 必须为 0,而 skipA 和 skipB 可以是任意值。
解释:这两个链表不相交,因此返回 null。

注意:

如果两个链表没有交点,返回 null.
在返回结果后,两个链表仍须保持原有的结构。
可假定整个链表结构中没有循环。
程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存

分析

这又是一道leetcode 前后不照应的sb题。起始节点就是输入的点啊,那你还找你?呢?还给我解视半天?(如果我理解错了题干我面壁思过)

所以有些leetcode的题你发现它的题干不对劲就直接按照感觉和给出的函数的输入用最正常的想法写就好了,有时候它的题库很sb

这个算法很简单:
两条链表的表头分别是pa pb,从第一个同时往后找。如果有一个点恰好两个点的结果一样,那么就意味着找到了这个点,并且两个链表表头到它的长度一样(当然后边也一样)
如果长度不一样就意味着要用这种找法会有一段先到链表末尾,如果pa先到末尾,pa转到另一个链表的头。去追,肯定会追上的。

代码:

/*** 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) {//都空if(headA==null||headB==null){return null;}ListNode pa=headA;ListNode pb=headB;boolean isPaChange=false;//记录有没有去另外一条链boolean isPbChange=false;//3.while(pa!=null&&pb!=null){//找到if(pa==pb){return pa;}//往后pa=pa.next;pb=pb.next;//这就说明 没找到if(isPaChange&&isPbChange&&pa==null&&pb==null){break;}//跳到另一条if(pa==null){pa=headB;isPaChange=true;}if(pb==null){pb=headA;isPbChange=true;}}return null;}
}

最快的leetcode上的java代码

/*** 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) {if (headA == null || headB == null) return null;ListNode hA = headA, hB = headB;while (hA != hB) {hA = hA == null ? headB : hA.next;hB = hB == null ? headA : hB.next;}return hA;}
}

参考了:
https://blog.csdn.net/u010189239/article/details/88947594
和leetcode库

leetcode 相交链表 java相关推荐

  1. 《LeetCode力扣练习》第160题 相交链表 Java

    <LeetCode力扣练习>第160题 相交链表 Java 一.资源 题目: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表不存 ...

  2. Java leetcode 相交链表

    相交链表 题目概述 编写一个程序,找到两个链表相交的起点 示例 输入:ListA = 4–>1–>8–>4–>5 ListA = 5–>0–>1–>8–> ...

  3. 《LeetCode力扣练习》剑指 Offer 25. 合并两个排序的链表 Java

    <LeetCode力扣练习>剑指 Offer 25. 合并两个排序的链表 Java 一.资源 题目: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: ...

  4. 《LeetCode力扣练习》剑指 Offer 24. 反转链表 Java

    <LeetCode力扣练习>剑指 Offer 24. 反转链表 Java 一.资源 题目: 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1-& ...

  5. 《LeetCode力扣练习》剑指 Offer 06. 从尾到头打印链表 Java

    <LeetCode力扣练习>剑指 Offer 06. 从尾到头打印链表 Java 一.资源 题目: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入: ...

  6. 《LeetCode力扣练习》第206题 反转链表 Java

    <LeetCode力扣练习>第206题 反转链表 Java 一.资源 题目: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 示例 1: 输入:head = [1,2, ...

  7. 《LeetCode力扣练习》第141题 环形链表 Java

    <LeetCode力扣练习>第141题 环形链表 Java 一.资源 题目: 给你一个链表的头节点 head ,判断链表中是否有环. 如果链表中有某个节点,可以通过连续跟踪 next 指针 ...

  8. 《LeetCode力扣练习》第21题 合并两个有序链表 Java

    <LeetCode力扣练习>第21题 合并两个有序链表 Java 一.资源 题目: 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例 ...

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

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

最新文章

  1. 你的接口,真的能承受高并发吗?
  2. 在Linux中打印函数调用堆栈【原创】
  3. mysql 分组 列转行_mysql列转行以及年月分组实例
  4. Centos 7.5安装配置MongoDB 4.0.5
  5. java.util.concurrent介绍【转】
  6. LINUX 内存使用情况
  7. oracle分区表学习及应用
  8. Java千百问_07JVM架构(001)_java内存模型是什么样的
  9. 【设计模式】重载和重写
  10. 单片机r6/r7c语言怎么用,第5章MCU混合编程与C语言和汇编语言
  11. digester java_Java-Digester:提取节点名称
  12. 快手磁力金牛和小店通的区别
  13. Python Dataframe之excel、csv、pickle、feather、parquet、jay、hdf5 文件存储格式==》存读效率对比
  14. Build Metal-based Core Image kernels with Xcode
  15. 关于计算机方面的一些数学书
  16. 怎么把图片存在mysql_如何把图片存储在mysql中
  17. Baumer工业相机堡盟相机如何通过BGAPI SDK联合OpenCVSharp进行图像简单拼接并显示固定数量保存和持续保存(C#)
  18. 谁是外汇市场的主要参与者?
  19. matlab 脉冲密度调制,脉冲压缩技术研究指导.doc
  20. JS–ECMAScript5

热门文章

  1. (七十六):Masked Autoencoders Are Scalable Vision Learners
  2. 基于PHP的自动化办公OA系统
  3. ECE认证机构怎么选?
  4. 2022-2028年中国菌菇酱行业市场现状分析及发展前景展望报告
  5. python如何打开mat文件_python读取mat文件
  6. 深圳二手房房价分析及预测
  7. 数据挖掘基础之数据清洗:用python把“深圳二手房参考价”PDF保存为EXCEL
  8. 计算机设备机房防静电标准,机房防静电地板设计标准是什么?
  9. 80后要坚守的人生底线
  10. 华为和字节,终于被时代驱赶到了同一条赛道上