leetcode——删除链表的倒数第N个节点(java)

给你一个链表,删除链表的倒数第 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]

解题方法:(双指针)

1.经过分析得出这道题可以使用双指针来进行解题,而首先为了避免我们删除了链表的头节点,所以我们先要设定哨兵节点。

2.然后我们的左右双指针同时指向哨兵节点,一开始我们用循环让右指针先走n步。

3.接着我们开始第二次循环直到右指针移到链表尾部,移动过程中左右双指针同时开始移动。

4.最后我们需要将左指针的指向下下个节点,跳过一个节点即可。

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 ans = new ListNode(0, head);
        ListNode left = ans;
        ListNode right = ans;
        while (n-- > 0) {
            right = right.next;
        }
        while (right.next != null) {
            left = left.next;
            right = right.next;
        }
        left.next = left.next.next;
        return ans.next;
    }
}
相关推荐
sheeta19982 小时前
LeetCode 每日一题笔记 日期:2025.03.21 题目:3643.垂直翻转子矩阵
笔记·leetcode·矩阵
短剑重铸之日8 小时前
《ShardingSphere解读》07 读写分离:如何集成分库分表+数据库主从架构?
java·数据库·后端·架构·shardingsphere·分库分表
知我Deja_Vu8 小时前
【避坑指南】ConcurrentHashMap 并发计数优化实战
java·开发语言·python
We་ct9 小时前
LeetCode 918. 环形子数组的最大和:两种解法详解
前端·数据结构·算法·leetcode·typescript·动态规划·取反
汉克老师9 小时前
GESP5级C++考试语法知识(六、链表(一)单链表)
c++·链表·单链表·快慢指针·进阶·gesp5级·gesp五级
daidaidaiyu9 小时前
Spring IOC 源码学习 事务相关的 BeanDefinition 解析过程 (XML)
java·spring
Book思议-10 小时前
【数据结构实战】线性表的应用
c语言·数据结构·算法·链表
鬼蛟10 小时前
Spring————事务
android·java·spring
x_xbx11 小时前
LeetCode:83. 删除排序链表中的重复元素
算法·leetcode·链表
西门吹-禅11 小时前
【sap fiori cds up error】
java·服务器·sap cap cds