zoukankan      html  css  js  c++  java
  • 微软面试题:找到两个单向链表的第一个公共节点

    问题描述:

      两个单向链表,可能存在公共节点。如何判断是否存在公共节点,并找出它们的第一个公共结点。
     
    分析:
      要注意到,单向链表右公共节点,实际上两个链表会组成一个Y型的结构,而不是交叉。
     
    第一种:
      循环比较...O(n^2)
     
    第二种:O(n)
      可以看到,两个链表的后半部分是相同的,不妨设链表为L1和L2,L1为10个节点,L2为7个节点。假设L1和L2相交,那么L1和L2的后半部分应该是相同的,现在的问题是怎么找到开始的交点?
      首先,把链表剪切到一样长(依据短的链表剪切...)(这一步很重要,为什么需要剪切,原因暂时还无法证明...)
          然后,比较两个链表的后继指针,如果相同则说明有交点...一直到链表结束...
     
      
      
  • 相关阅读:
    体育场馆预订系统版本1.0
    需求分析
    系统界面主地图
    详细设计
    概要设计
    测试用例正式发布
    第二次全体会议顺利召开5.30
    第一次小组会议(5.24)
    SDk编程基础
    单词canutillos祖母绿canutillos英语
  • 原文地址:https://www.cnblogs.com/xuxu8511/p/2439216.html
Copyright © 2011-2022 走看看