LeetCode Java刷题笔记—160. 相交链表
Posted 刘Java
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Java刷题笔记—160. 相交链表相关的知识,希望对你有一定的参考价值。
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
简单难度,这道题和剑指 Offer 52. 两个链表的第一个公共节点是同一道题。A和B两个链表长度可能不同,但是A+B和B+A的长度是相同的,所以两个节点先遍历自己再遍历对方一定是同时结束。 如果A,B相交的话A和B有一段尾巴是相同的,所以两个遍历的指针一定会同时到达第一个交点 如果A,B不相交的话两个指针就会同时到达尾部,即出现null=null的情况。
public ListNode getIntersectionNode(ListNode headA, ListNode headB)
ListNode l1 = headA, l2 = headB;
while (l1 != l2)
//如果走完自己的路,开始走对方的路
l1 = l1 == null ? headB : l1.next;
l2 = l2 == null ? headA : l2.next;
return l1;
以上是关于LeetCode Java刷题笔记—160. 相交链表的主要内容,如果未能解决你的问题,请参考以下文章
[JavaScript 刷题] 链表 - 相交链表, leetcode 160