• 【面试题37】两个链表的第一个公共结点


    【题目描述】

    输入两个链表,找出它们的第一个公共结点。

    【解决方案】

    解法一:利用两个辅助栈,以此将两个链表的结点压入。然后分别弹出两个栈中的结点,直到找到最后一个相同的结点,即为它们的第一个公共结点。

    缺点:需要耗费O(m+n)空间复杂度;

    解法二:分别便利两个链表的长度,记录下两个链表的长度m,n (m>n),则m长的链表结点先走m-n步,直到找到它们相同的结点,即为它们的第一个公共结点。

    优点:和第一种解决方法的时间复杂度相同,但是不需要耗费空间复杂度。

    我的代码实现,仅供参考:

     1         public static ListNode FindFirstCommonNode(ListNode headA, ListNode headB)
     2         {
     3             if (headA == null || headB == null)
     4                 return null;
     5 
     6             ListNode listLong = headA, listShort = headB;
     7 
     8             int lenA = GetListLength(headA);
     9             int lenB = GetListLength(headB);
    10             int lenDif = lenA - lenB;
    11 
    12             if (lenA < lenB)
    13             {
    14                 listLong = headB;
    15                 listShort = headA;
    16                 lenDif = lenB - lenA;
    17             }
    18 
    19             //先让长链表多走m-n步
    20             while (lenDif > 0)
    21             {
    22                 listLong = listLong.Next;
    23                 lenDif--;
    24             }
    25 
    26             //两个链表一起走,直到找到相同的结点为止
    27             while ((listShort != null) && (listLong != null) && (listLong != listShort))
    28             {
    29                 listLong = listLong.Next;
    30                 listShort = listShort.Next;
    31             }
    32 
    33             return listLong;
    34         }
    35 
    36         public static int GetListLength(ListNode head)
    37         {
    38             int length = 0;
    39 
    40             while (head != null)
    41             {
    42                 head = head.Next;
    43                 length++;
    44             }
    45 
    46             return length;
    47         }
  • 相关阅读:
    js——h5如何直接唤起百度地图app进行导航
    flutter学习之路-window下安装
    mongoDB- window下安装与启动
    js-轻松理解map, reduce, filter ,every, some
    js基础-构造函数
    js基础-node环境下说哈js异步,同步,单线程,微任务和宏任务
    js基础-作用域和作用域链以及闭包
    wamp安装
    php tp5 连接sqlserver配置
    php curl扩展
  • 原文地址:https://www.cnblogs.com/HuoAA/p/4828195.html
Copyright © 2020-2023  润新知