160.相交链表
Posted 小刘你最强
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了160.相交链表相关的知识,希望对你有一定的参考价值。
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
图示两个链表在节点 c1 开始相交:
思路:计算两个链表的长度,指针现在长的链表走一个长度差,然后一起走,直到相遇
public class Solution
public ListNode getIntersectionNode(ListNode headA, ListNode headB)
ListNode curA = headA;
ListNode curB = headB;
int lenA = 0;
int lenB = 0;
while(curA != null)
lenA++;
curA = curA.next;
while(curB != null)
lenB++;
curB = curB.next;
curA = headA;
curB = headB;
if(lenA < lenB)
ListNode tNode = curA;
curA = curB;
curB = tNode;
int tLen = lenA;
lenA = lenB;
lenB = tLen;
int len = lenA - lenB;
while(len-- > 0)
curA = curA.next;
while(curA != null)
if(curA == curB)
return curA;
curA = curA.next;
curB = curB.next;
return null;
public class Solution
public ListNode getIntersectionNode(ListNode headA, ListNode headB)
ListNode curA = headA;
ListNode curB = headB;
while(curA != curB)
curA = curA != null ? curA.next : headB;
curB = curB != null ? curB.next : headA;
return curA;
以上是关于160.相交链表的主要内容,如果未能解决你的问题,请参考以下文章