当前位置: 首页 > news >正文

Day9 |删除链表倒数第N个节点 相交链表

第九天,明天准备回顾总结一下之前的日记嘞。

题目:删除链表的倒数第 N 个结点(LeetCode 19)

描述:给你一个链表,删除链表的倒数第n个结点,并返回链表的头结点。

解法:快慢指针

定义两个指针,相差x步,当快指针走到最后节点时,慢指针刚好指向删除节点。

public class Solution { public ListNode RemoveNthFromEnd(ListNode head, int n) { ListNode reHead = new ListNode(-1); reHead.next = head; ListNode poi_1 = reHead; ListNode poi_2 = reHead; //拉开n的差距 for(int i = 0;i < n;i++){ poi_1 = poi_1.next; } while(poi_1.next != null){ poi_1 = poi_1.next; poi_2 = poi_2.next; } poi_2.next = poi_2.next.next; return reHead.next; } }

题目:相交链表

描述:找到两个单链表相交的起始节点。如果不相交,返回null

解法一:哈希表

把一个列表的所有节点都存进哈希表,然后遍历另一个列表,第一个在哈希表中出现的节点就是相交点。

public class Solution { public ListNode GetIntersectionNode(ListNode headA, ListNode headB) { Hashtable table = new Hashtable(); ListNode poi1 = headA; while (poi1 != null) { table.Add(poi1, poi1.val); poi1 = poi1.next; } ListNode poi2 = headB; while (poi2 != null) { if (table.ContainsKey(poi2)) { return poi2; } poi2 = poi2.next; } return null; } }

解法二:双指针

public class Solution { public ListNode GetIntersectionNode(ListNode headA, ListNode headB) { ListNode p1 = headA; ListNode p2 = headB; while (p1 != p2) { p1 = p1 != null ? p1.next : headB; p2 = p2 != null ? p2.next : headA; } return p1; // 要么是交点,要么是 null } }

一开始我尝试过不处理走到末尾的指针,让它继续取next,结果空引用报错。于是让指针“跳到另一条路”重新跑。刚开始还担心会不会无限循环,后来画图算了一下,总路程一样,最终一定会同时变成null,不存在死循环。

这个解法让我想起一点歌词嘞。。。
我吹过你吹过的晚风
是否看过同样 风景
像扰乱时差留在错位时空
终是空 是空

http://www.gsyq.cn/news/1602669.html

相关文章:

  • 技术突破:Python实现QQ音乐API数据解析与资源获取方案
  • 卤水点豆腐和胶体聚沉之间的关系
  • 鸿蒙 ArkTS 实战:Recitation Timer 从状态建模到交互闭环完整解析
  • 5个理由选择FreeShip Plus:零成本专业船舶设计完全指南
  • ComfyUI-Impact-Pack终极指南:5个技巧让AI图像细节清晰如镜
  • NifSkope深度解析:游戏文件编辑架构与扩展开发最佳实践
  • ComfyUI BrushNet图像修复工作流终极配置指南:5个常见错误与解决方案
  • shader开发工具
  • 告别“more than one device/emulator”困扰:精准定位与高效调试指南
  • 鸿蒙 ArkTS 实战:Paper Reader 从状态建模到交互闭环完整解析
  • 从线芯排列到传输性能:深度解析超五类与六类水晶头的设计哲学与实战选择
  • 2026年想找靠谱的金相显微镜工厂 这些实用选购干货值得你参考
  • AI模型能力演进与安全发布机制解析
  • 3分钟掌握HS2-HF Patch:一站式汉化去码解决方案终极指南
  • 15分钟构建专业级黑苹果配置:OpCore-Simplify的智能化解决方案
  • 文件上传漏洞防御实战:从原理到PHP安全实现
  • Android binder(RPC) 通信概念与架构
  • 技术桥接中的抽象分离与实现独立
  • 终极内存检测指南:5步彻底解决电脑蓝屏和死机问题
  • Dalín X 意识框架实测数据报告
  • 如何三步获取阿里云盘Refresh Token?解锁云盘自动化管理新体验
  • A股量化,单策略真的不够用了:我开源了一个双策略自动切换框架
  • 星皓 MDM.Plus 是什么?面向手机租赁和企业设备管理的一站式 MDM 解决方案
  • 5分钟零基础入门:Kafka-UI可视化集群管理终极指南
  • 技术写作的价值与技巧
  • Kafka集群管理太复杂?这款开源Web UI让你5分钟上手
  • Jellyfin Bangumi插件完整指南:打造智能动漫库的终极方案
  • 3分钟掌握B站缓存视频转换:m4s转MP4完整教程
  • LeetCode 287. 寻找重复数:从直觉到 Floyd 判圈的完整推导
  • Python的__init_subclass__验证