力扣hot100之160.相交链表

题目:给你两个单链表的头节点headA和 headB,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null。

https://leetcode.cn/problems/intersection-of-two-linked-lists/description/?envType=problem-list-v2&envId=2cktkvj

题解:一开始并没有看懂这道题是什么意思。通过查看提示才逐渐明白题意。如果 listA 和 listB有交点,则X=listA[skipA]=listB[skipB]。我们可以通过循环遍历来得到相交节点。

X是相交的值。

skipA和skipB分别代表着各个链表从头结点到相交节点需要走几步。

list[ ]数组则存储着链表的值。

示例:A链表为4,1,8,4,5;B链表为5,0,1,8,4,5;

则X=8.而不是1.因为他们节点所在内存位置并不相同.

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode A = headA, B = headB;
        while (A != B) {
        // 如果 A 当前不为空,则将 A 移动到下一个节点
        // 否则 A 到达了链表 A 的末尾,切换到链表 B 的头节点
          if (A != null)  A = A.next;
          else  A = headB;
       // 如果 B 当前不为空,则将 B 移动到下一个节点
      // 否则 B 到达了链表 B 的末尾,切换到链表 A 的头节点
         if (B != null)   B = B.next;
          else   B = headA;
        }
        return A;
    }
}

当A链表循环一遍到达相交点时B链表也同时到达相交点。此为结果。当不相交时,则结果为null。

 

如果对您有帮助的话,能否支持一下博主?
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇