算法-链表-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     }
复制代码

 

无环判断双链表相交点?

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

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

一个有环一个无环 不可能

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

有三种情况

 

 先求两个链表的相交点

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

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

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

posted @   rudynan  阅读(30)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示