算法-链表-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 }
无环判断双链表相交点?
长链表 先走两个链表长度的差值,然后同步走 相交点是相交点
两个链表的最后一个节点相等说明两个无环链表相交
一个有环一个无环 不可能
两个链表都有环 如何判断是否相交/相交点?
有三种情况
先求两个链表的相交点
如果两个相交点内存地址一样说明是第二种情况 ,求相交点根据无环链表规则求 相交点为终点
如果一个链表遍历的过程中,能遇到第另一个相交点 属于第三种情况 在第一个链表遍历中遇到第二个相交点的时候是 两个链表的相交点
两个相交点不相遇也不相同 无相交
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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 让容器管理更轻松!