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

蓝桥与力扣刷题(19 删除链表的倒数第N个结点)

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

示例 1:

输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]

示例 2:

输入:head = [1], n = 1
输出:[]

示例 3:

输入:head = [1,2], n = 1
输出:[1]

解题思路+代码:

代码:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        /**
        思路:
        1.判断所给的链表是否为空链表,为空直接返回null
        2.删除某个节点使用架空思想来删除该节点,衔接到删除节点的下一个next
        3.创建一个新的链表存放删除节点后的链表
        4.双指针遍历链表,双指针从头节点开始依次遍历,fast快指针先遍历完链表,可迅速找到倒数第n个节点时,slow指针在遍历到第n个节点时,指向删除节点的下一个next节点
         */
        
        if(head == null){
            return null;
        }

        //创建一个新的链表存放删除节点后的链表
        ListNode newList = new ListNode(0);
        newList.next = head;

        //声明快慢指针
        ListNode fastNode = newList;
        ListNode slowNode = newList;

        //遍历链表,找到倒数第n个节点
        for(int i = 0;i < n;i++){
            fastNode = fastNode.next;
        }
 
        //遍历链表
        while(fastNode.next != null){
            //指针后移
            fastNode = fastNode.next;
            slowNode = slowNode.next;
            }
                        
        //架空删除节点的信息
        slowNode.next = slowNode.next.next;
        return newList.next;
    }
}

总结:这道题的难点就在于如何找到链表的倒数第N个结点并删除。因为单链表没有反向指针,所以无法使用左右指针来进行快速删除。只能使用双指针法,快指针迅速遍历完链表后,找到需要删除的倒数第N个结点慢指针遍历到需要删除的倒数第N个结点时,使用架空思想(slow.next = slow.next.next)来达到删除倒数第N个结点的目的。


http://www.kler.cn/a/537851.html

相关文章:

  • 【redis】数据类型之hash
  • opentelemetry-collector 配置elasticsearch
  • 【实用教程】在 Android Studio 中连接 MuMu 模拟器
  • 疯狂前端面试题(二)
  • Gradle 发布Jar到 Maven Central
  • DeepSeek使用技巧大全(含本地部署教程)
  • 刚发布的nodejs 23提供了哪些新能力
  • 高效Android Studio编程:快捷键汇总
  • IDEA编写SpringBoot项目时使用Lombok报错“找不到符号”的原因和解决
  • I2C协议—读写EEPROM(24Cxx为例)
  • VSCode 换行符问题
  • Deepseek的起源与发展
  • (六)QT——布局&常用控件——基本的用户输入界面
  • HTTP报文格式
  • 蓝桥杯---力扣题库第38题目解析
  • html css网页制作成品——HTML+CSS爷爷不泡茶的茶网页设计(7页)附源码
  • IDEA安装离线插件(目前提供了MavenHelper安装包)
  • npm中央仓库
  • pycharm ai插件
  • element-plus 解决el-dialog背后的页面滚动问题,及其内容有下拉框出现错位问题
  • 21.[前端开发]Day21-HTML5新增内容-CSS函数-BFC-媒体查询
  • < 评论 > 阿里云 与 腾讯云 国内的轻量应用服务器(VPS)产品对比
  • 【韩顺平linux】部分上课笔记整理
  • 星网锐捷 DMB-BS LED屏信息发布系统taskexport接口处存在敏感信息泄露
  • 机器学习专业毕业设计选题灵感集锦:选题建议
  • C++STL(四)——vector模拟