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;
    }
}
相关推荐
面试官E先生20 分钟前
【极兔快递Java社招】一面复盘|数据库+线程池+AQS+中间件面面俱到
java·面试
琢磨先生David25 分钟前
构建优雅对象的艺术:Java 建造者模式的架构解析与工程实践
java·设计模式·建造者模式
小雅痞40 分钟前
[Java][Leetcode simple]26. 删除有序数组中的重复项
java·leetcode
YuforiaCode40 分钟前
LeetCode 热题 100 35.搜索插入位置
数据结构·算法·leetcode
青云交1 小时前
Java 大视界 -- 基于 Java 的大数据分布式存储在工业互联网海量设备数据长期存储中的应用优化(248)
java·大数据·工业互联网·分布式存储·冷热数据管理·hbase 优化·kudu 应用
纸包鱼最好吃1 小时前
java基础-package关键字、MVC、import关键字
java·开发语言·mvc
唐山柳林1 小时前
城市生命线综合管控系统解决方案-守护城市生命线安全
java·安全·servlet
PgSheep1 小时前
Spring Cloud Gateway 聚合 Swagger 文档:一站式API管理解决方案
java·开发语言
蒂法就是我2 小时前
详细说说Spring的IOC机制
java·后端·spring
程序员拂雨2 小时前
Java知识框架
java·开发语言