链表之leetcode19:删除链表的倒数第N个结点

删除链表的倒数第N个结点
题目描述

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

提示:

  • 链表中的结点的数目为sz
  • 1 <= sz <= 30
  • 0 <= Node.val <= 100
  • 1 <= n <= sz
代码
java 复制代码
/**
 * 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) {
        // 使用一个虚拟头结点进行统一处理
        ListNode dummyHead = new ListNode();
        dummyHead.next = head;
        
        // 可以使用两个指针,先让快指针往后移动n个位置,然后慢指针和快指针同时移动,直到快指针指向null,此时慢指针指向的是倒数第n个元素
        // 由于要删除元素,所以我们需要指向要删除元素的前一个元素
        // 所以可以将快指针再往后移动一个元素,也就是总共移动n+1个位置
        ListNode slow = dummyHead;
        ListNode quick = dummyHead;
        n++;
        while(n-- != 0) {
            quick = quick.next;
        }
        // 快慢指针同时移动
        while(quick != null) {
            slow = slow.next;
            quick = quick.next;
        }
        slow.next = slow.next.next;
        return dummyHead.next;
    }
}
相关推荐
金融小师妹4 小时前
人工智能推演框架:非农降温信号如何重构黄金定价模型
数据结构·人工智能·机器学习·transformer
ysa0510306 小时前
【并查集】判环,深搜
数据结构·c++·算法·深度优先
.Hypocritical.8 小时前
数据结构笔记——链表成环/反转 + 有序二叉树(BST)构建、遍历、删除
java·数据结构
CSharp精选营5 天前
关系型 vs 非关系型:从原理到选型,一文搞定数据库核心分类
数据结构·nosql·关系型数据库·非关系型数据库·技术选型
刘马想放假8 天前
Modbus 全栈技术解析:TCP、RTU、ASCII、RTU over TCP
数据结构·网络协议
北域码匠9 天前
冒泡排序太慢?鸡尾酒排序双向优化,原生 C# 零第三方库完整代码
数据结构·排序算法·泛型·c# 算法·鸡尾酒排序·原生 c# 开发·冒泡排序优化·嵌入式算法
Darling噜啦啦16 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
小小工匠17 天前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
玖玥拾17 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
Qres82117 天前
算法复键——树状数组
数据结构·算法