zoukankan      html  css  js  c++  java
  • 3.6 编程判断两个链表是否相交

    题目:编程判断h1、h2两个链表是否相交(为简单起见,假设两个链表不存在环)
     
    解法1:将h1的各个节点地址进行hash,建立hash表,在hash表搜索h2的节点地址,若存在,则相交。
     
    解法2:若h1,h2相交,那么自相交节点后所有的节点都为这两个链表共享。基于这个特点,直接判断h1、h2两个链表最后节点是否在同一地址即可。
     
    解法3:由于两链表本身不存在环,我们可以把第二个链表接在第一个链表后,如果得到的链表有环,则说明这两个链表相交。这样,问题转化为判断变化后的链表是否存在环。(涨姿势了)
     
    判断一个链表是否有环
    • 地址hash表法:bool a[x]表示地址为x的节点是否已经出现。遍历链表,每遍历一个节点,就将数组该位置标志为1,若发现该位置已被标志,则存在环。
    • 追尾法:设置两个指针slow、fast。slow每次前进一个节点,fast每次前进2个节点。若链表存在环,slow和fast必会相遇。
     
  • 相关阅读:
    理解java的三大特性之封装
    特征学习
    Java类编译、加载、和执行
    榜样
    组合学习模型
    python的re模块详解
    python的argpare和click模块详解
    vue的组件
    vue的表单输入绑定
    vue的事件处理梳理
  • 原文地址:https://www.cnblogs.com/icfnight/p/3278089.html
Copyright © 2011-2022 走看看