首页 > 其他 > 详细

LeetCode 160 相交链表

时间:2021-04-05 00:48:10      阅读:24      评论:0      收藏:0      [点我收藏+]

编写一个程序,找到两个单链表相交的起始节点。


public class FindIntersect {

    /**
     * 思路:
     *      先求出两链表的长度,然后让更长的那个移动到能和更短的那个一样长的位置
     *      然后两个一起移动,直到值相等,说明相交了
     * @param headA
     * @param headB
     * @return 相交的节点
     */
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        int lenA = 0;
        ListNode temp = headA;
        while (temp != null) {
            temp = temp.next;
            lenA++;
        }
        int lenB = 0;
        temp = headB;
        while (temp != null) {
            temp = temp.next;
            lenB++;
        }
        if (lenA > lenB) {
            for (int i = 0; i < lenA - lenB; i++)
                headA = headA.next;
        }
        else if (lenA < lenB) {
            for (int i = 0; i < lenB - lenA; i++)
                headB = headB.next;
        }

        while (headA != null && headB != null) {
            if (headA == headB) {
                break;
            }
            headA = headA.next;
            headB = headB.next;
        }

        if (headA == null || headB == null)
            return null;
        return headA;
    }

}

LeetCode 160 相交链表

原文:https://www.cnblogs.com/easternE/p/14617162.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!