刷题笔记-(LeetCode)-相交链表
本文最后更新于:May 13, 2023 pm
积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里,不积小流无以成江海。齐骥一跃,不能十步,驽马十驾,功不在舍。面对悬崖峭壁,一百年也看不出一条裂缝来,但用斧凿,能进一寸进一寸,能进一尺进一尺,不断积累,飞跃必来,突破随之。
目录
思路很重要!!!
AC代码
1 |
|
思路
场景:现有两条路A和B,有交叉重叠部分C,一个人M1在A的起点,一个人M2在B的起点。两个人有相同的移动速度,那么,他们有可能相遇吗?
题目思路
本思路参考力扣题解,图也摘抄题解。 题解
两个链表从同距离末尾同等距离的位置开始遍历。这个位置只能是较短链表的头结点位置。为此,我们必须消除两个链表的长度差:
指针 pA 指向 A 链表,指针 pB 指向 B 链表,依次往后遍历。
如果 pA 到了末尾,则 pA = headB 继续遍历。
如果 pB 到了末尾,则 pB = headA 继续遍历。
比较长的链表指针指向较短链表head时,长度差就消除了。
如此,只需要将最短链表遍历两次即可找到位置
个人理解
简单理解就是:两条相同的长度的路,两个人用相同的速度,那么在相同的时间内他们走的长度一定是相同的,无非就是走的路不是同一条而已。你走了你自己的又走了我的,我走了我自己的又走了你的,那么最后一定是一样的。
本文作者: 墨水记忆
本文链接: https://tothefor.com/DragonOne/b7a00fa7.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!