相交链表(Java)

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 n相交链表(Java)_第1张图片ull 。

 相交链表(Java)_第2张图片

 

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
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(lenB>lenA)
        { int temlen=lenA;
            lenA=lenB;
            lenB=temlen;

            ListNode tem=curA;
            curA=curB;
            curB=tem;
           
        }
        int gap=lenA-lenB;

        while(gap-->0){
            curA=curA.next;
        }
        while(curA!=null){
            if(curA==curB){
                return curA;
            }
            curB=curB.next;
            curA=curA.next;
        }
        return null;

        
    }
}

你可能感兴趣的:(链表,java,数据结构)