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

LeetCode 19:删除链表的倒数第N 个结点

题目:
在这里插入图片描述
地址:https://leetcode.cn/problems/remove-nth-node-from-end-of-list/

方法一:
在这里插入图片描述

方法二:
在这里插入图片描述

代码:

package com.zy.leetcode.LeetCode_19;/*** @Author: zy* @Date: 2024-12-25-13:01* @Description: 删除链表的倒数第N 个结点*/
public class ListNode_19 {private int val;private ListNode_19 next;public ListNode_19(int val, ListNode_19 next) {this.val = val;this.next = next;}public ListNode_19() {}public ListNode_19 removeNthFromEnd(ListNode_19 head, int n) {//添加哨兵ListNode_19 s = new ListNode_19(-1, head);recursion(s, n);return s.next;}public ListNode_19 removeNthFromEnd2(ListNode_19 head, int n) {//添加哨兵ListNode_19 s = new ListNode_19(-1, head);ListNode_19 p1 = s;ListNode_19 p2 = s;// 先让p2 先走 n 步for (int i = 0; i < n; i++) {p2 = p2.next;}// 然后让p1 和 p2 同时前进,直到 p2 为 nullwhile (p2 != null) {p1 = p1.next;p2 = p2.next;}// 删除 p1 所指的节点if (p1 != null && p1.next != null) {p1.next = p1.next.next;} else {p1 = null;}return s.next;}/*** 递归方式* 根据输入的节点,删除倒数numK 的值** @param node 节点* @param numK 倒数第几* @return*/private int recursion(ListNode_19 node, int numK) {if (node == null) {return 0;}//返回下一节点的位置int nth = recursion(node.next, numK);//进行判断if (nth == numK) {// 删除该节点if (node != null || node.next != null) {node.next = node.next.next;} else {node = null;return 0;}}return nth + 1;}public static void main(String[] args) {ListNode_19 node1 = new ListNode_19(1, null);//        ListNode_19 node2 = new ListNode_19(2, null);//        ListNode_19 node3 = new ListNode_19(3, null);//        ListNode_19 node4 = new ListNode_19(4, null);//        ListNode_19 node5 = new ListNode_19(5, null);//        node1.next = node2;//        node2.next = node3;//        node3.next = node4;//        node4.next = node5;while (node1 != null) {System.out.println(node1.val);node1 = node1.next;}System.out.println("------------");ListNode_19 result = new ListNode_19().removeNthFromEnd(node1, 1);ListNode_19 result1 = new ListNode_19().removeNthFromEnd(node1, 1);while (result1 != null) {System.out.print(result1.val + " -> ");result1 = result1.next;}}
}
http://www.lryc.cn/news/510858.html

相关文章:

  • RT-DETR融合[IJCV2024]LSKNet中的LSKBlock模块
  • C/C++ 数据结构与算法【树和森林】 树和森林 详细解析【日常学习,考研必备】带图+详细代码
  • 新浪微博大数据面试题及参考答案(数据开发和数据分析)
  • OpenHarmony怎么修改DPI密度值?RK3566鸿蒙开发板演示
  • SAP GUI Scripting - 如何判断组件是否存在
  • Go 计算Utf8字符串的长度 不要超过mysql字段的最大长度
  • llamafactory报错:双卡4090GPU,训练qwen2.5:7B、14B时报错GPU显存不足(out of memory),轻松搞定~~~
  • 全局webSocket 单个页面进行监听并移除单页面监听
  • JVM调优实践篇
  • 【JavaEE】Spring Web MVC
  • VSCode 插件开发实战(七):插件支持了哪些事件,以及如何利用和监听这些事件
  • 指针详解之 多层嵌套的关系
  • Animated Drawings:让纸上的角色动起来
  • 技术与教育的结合:高校听课评价系统的设计与实施
  • web移动端项目常用解决方案
  • LabVIEW软件项目设计方案如何制定
  • 数据结构(Java)——链表
  • 变量与数据类型 - 整型、浮点型、字符型等
  • MacOS安装Xcode(非App Store)
  • 运行Zr.Admin项目(后端)
  • Ubuntu24.04最新版本安装详细教程
  • js版本之ES6特性简述【Proxy、Reflect、Iterator、Generator】(五)
  • CSS实现一个自定义的滚动条
  • CKA认证 | Day8 K8s安全
  • 深度分析java 使用 proguard 如何解析混淆后的堆栈
  • bash 中 ${-#*i} 是什么意思?
  • 什么是Top-p采样与Top-k采样?大模型推理时如何同时设置?解析Transformers库源代码
  • java队列--数据结构
  • 【WebSocket】tomcat内部处理websocket的过程
  • 【踩坑/Linux】Vmware中的Ubuntu虚拟机无法访问互联网