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必会相遇。
     
  • 相关阅读:
    练习1-6
    c语言while(1)和while(0)
    练习1-3
    每天总结模电--(三)
    每天总结模电——贴片电阻,电容的命名规则(二)
    服务器应用的通用功能
    UML
    算法合集
    python笔记
    笔面试(2019秋招阶段)
  • 原文地址:https://www.cnblogs.com/icfnight/p/3278089.html
Copyright © 2011-2022 走看看