• 算法-链表-1


    哈希表(o1)

    常数操作 

    如果存储的基本数据类型,存储的是值

    如果存储的是引用类型,存储的是引用内存地址

    有序表(o logn)

    key有序组织

    判断一个链表有环无环,第一个入环点?

    快慢指针是否相交

    有环判断单链表相交点?

    慢指针从相交点开始 快指针从头开始 每次都只一步,相交的点是第一个入环点

     1 public ListNode detectCycle(ListNode head) {
     2         ListNode p1 = head;
     3         ListNode p2 = head;
     4         while (p2 != null && p2.next != null) {
     5             p1 = p1.next;
     6             p2 = p2.next.next;
     7             if (p1 == p2) {
     8                 break;
     9             }
    10         }
    11         if (p2 == null || p2.next == null) {
    12             return null;
    13         }
    14         p2 = head;
    15         while (p1 != p2) {
    16             p1 = p1.next;
    17             p2 = p2.next;
    18         }
    19         return p1;
    20     }

    无环判断双链表相交点?

    长链表 先走两个链表长度的差值,然后同步走 相交点是相交点

    两个链表的最后一个节点相等说明两个无环链表相交

    一个有环一个无环 不可能

    两个链表都有环 如何判断是否相交/相交点?

    有三种情况

     先求两个链表的相交点

    如果两个相交点内存地址一样说明是第二种情况 ,求相交点根据无环链表规则求 相交点为终点

    如果一个链表遍历的过程中,能遇到第另一个相交点 属于第三种情况 在第一个链表遍历中遇到第二个相交点的时候是 两个链表的相交点

    两个相交点不相遇也不相同 无相交

  • 相关阅读:
    天堂Lineage(單機版)從零開始架設教學 Installing Lineage 3.52 Server
    /dev/random vs /dev/urandom
    Linux Interactive Exploit Development with GDB and PEDA
    Python : Polymorphism
    Python : Data Encapsulation
    Using Keyboard Navigation
    Capture pictures using Jpython
    Java并发编程:volatile关键字解析
    java 资料收集
    解决ubuntu侧边栏固定应用单击无反应的问题
  • 原文地址:https://www.cnblogs.com/isnotnull/p/14978217.html
Copyright © 2020-2023  润新知