160. 相交链表

Posted 潜行前行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了160. 相交链表相关的知识,希望对你有一定的参考价值。

  1. 相交链表
    给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。

图示两个链表在节点 c1 开始相交:

题目数据 保证 整个链式结构中不存在环。

注意,函数返回结果后,链表必须 保持其原始结构 。

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        int sumA = 0, sumB = 0;
        ListNode tmpA = headA;
        ListNode tmpB = headB;
        while(tmpA != null){ 
            sumA++;
            tmpA = tmpA.next;
        }
        while(tmpB != null){
            sumB++;
            tmpB = tmpB.next;
        }
        tmpA = headA;
        tmpB = headB;
        while(sumA > sumB){
            tmpA = tmpA.next;
            sumA--;
        }
        while(sumB > sumA){
            tmpB = tmpB.next;
            sumB--;
        }
        for(int i=0;i<sumA;i++){
            if(tmpA == tmpB){
                return tmpA;
            }
            tmpA = tmpA.next;
            tmpB = tmpB.next;
        }
        return null;
    }
}
public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode tmpA = headA ,tmpB = headB;
        while(tmpA!=tmpB){
            tmpA = tmpA == null ? headB : tmpA.next;
            tmpB = tmpB == null ? headA : tmpB.next;
        }
        return tmpA;
    }
}

以上是关于160. 相交链表的主要内容,如果未能解决你的问题,请参考以下文章

160链表-相交链表

链表--相交链表(leetcode 160

LeetCode系列160. 相交链表

160. 相交链表

代码随想录算法训练营第四天 | 24.两两交换链表中的节点19.删除链表的倒数第N个节点160.相交链表142.环形链表II

LeetCode 160. 相交链表