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

LCR 021

题目:LCR 021


解法一:计算链表长度

遍历两次,第一次获取链表长度 L(包括虚拟节点),第二次遍历到第 L-n 个节点(从虚拟节点遍历)

    public ListNode removeNthFromEnd(ListNode head, int n) {ListNode dummy = new ListNode(0, head);int L = 0;ListNode temp = dummy;while (temp != null) {L++;temp = temp.next;}temp = dummy;for (int i = 1; i < L - n; i++) {temp = temp.next;}temp.next = temp.next.next;return dummy.next;}

注意

  • 建议在头节点前添加虚拟节点,因为假如要删除的是第一个元素,就不能用前节点指向后节点的方法来删除节点,因此推荐给头节点加上前驱节点
  • while 循环条件为 temp != null,而非 temp.next != null

解法二:马拉车算法

将链表所以节点压入栈中,顺序弹出,弹出n个后,栈顶元素即为删除节点的前驱节点

    public ListNode removeNthFromEnd(ListNode head, int n) {Stack<ListNode> stack = new Stack<>();ListNode dummy = new ListNode(0, head);ListNode temp = dummy;while (temp != null) {stack.push(temp);temp = temp.next;}for (int i = 0; i < n; i++) {stack.pop();}temp = stack.peek();temp.next = temp.next.next;return dummy.next;}

注意while 循环条件为 temp != null,而非 temp.next != null


解法三:双指针

设置双指针,前指针指向第 n 个节点,后指针指向头节点,同时向后遍历,当前指针遍历到尾部时,后指针指向的即为删除节点的前驱节点

    public ListNode removeNthFromEnd(ListNode head, int n) {ListNode dummy = new ListNode(0, head);ListNode first = dummy;ListNode second = dummy;for (int i = 0; i < n; i++) {first = first.next;}while (first.next != null) {first = first.next;second = second.next;}second.next = second.next.next;return dummy.next;}

注意while 循环条件为 temp.next != null,而非 temp != null


http://www.lryc.cn/news/433951.html

相关文章:

  • 【阿雄不会写代码】全国职业院校技能大赛GZ036第四套
  • Vue组件:使用$emit()方法监听子组件事件
  • 数据分析-埋点
  • 【文心智能体】通过工作流使用知识库来实现信息查询输出,一键查看旅游相关信息,让出行多一份信心
  • 服务器监控工具都是监控服务器的哪些性能和指标
  • 不小心删除丢失了所有短信?如何在 iPhone 上查找和恢复误删除的短信
  • 【skyvern 快速上手】一句话让AI帮你实现爬虫+自动化
  • 【C++ Primer Plus习题】14.1
  • 在Ubuntu上运行QtCreator相关程序
  • MybatisPlus 快速入门
  • Java.lang中的String类和StringBuilder类介绍和常用方法
  • notepad++软件介绍(含安装包)
  • chapter13-常用类——(章节小结)——day17
  • RTX AI PC 和工作站上部署多样化 AI 应用支持 Multi-LoRA
  • C++ STL-deque容器入门详解
  • 数据结构之折半查找
  • linux高级学习12
  • leetcode:3174 清除数字 使用栈,时间复杂度O(n)
  • 神经网络卷积操作
  • 专题二_滑动窗口_算法专题详细总结
  • 【机器学习-三-无监督学习】
  • JAVA基础:Lambda表达式(上)
  • Vue使用fetch获取本地数据
  • 《酒饮真经》秘籍4,让你的酒场技巧更上一层楼!
  • 回车符与快捷键记录
  • 计算机网络-VRRP工作原理
  • 6.5椒盐噪声
  • CSS样式的引用方式以及选择器使用
  • Python Flask_APScheduler定时任务的正确(最佳)使用
  • Linux命名管道