0
点赞
收藏
分享

微信扫一扫

LeetCode:相交链表(java)

笙烛 2023-06-01 阅读 51

相交链表


#LeetCode 160题:相交链表,原题链接
原题链接。相交链表–可以打开测试

题目描述

指针法解题

代码演示:可以复制进leetcode 测试

/**
 * 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) {
        if(headA == null || headB == null){
             return null;   
        }
        ListNode curA = headA;
        ListNode curB = headB;
        int a1 = 0;
        while(curA != null){
            a1++;
            curA = curA.next;
        }
        int a2 = 0;
        while(curB != null){
           a2++;
           curB = curB.next;     
        }
        int a3 = Math.abs(a1 - a2);
       //长度长的链表给curA
        curA = a1 >= a2 ? headA : headB;
        curB  = curA == headA ? headB : headA;
        while(a3 > 0){
            curA =  curA.next;
            a3--;
        }
        while(curA != curB){
            if(curA.next == null || curB.next == null){
                return null;
            }
            curA = curA.next;
            curB = curB.next;
        }
        return curA;
    }
}

单链表-快慢指针法来确定链表中间位置.

一键三连。

举报

相关推荐

0 条评论