快慢指针删除链表的第N个元素——力扣19

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

分析:

想要删除倒数第n个节点,我们必须找到倒数第n+1个节点,即倒数第n节点的前驱节点

思路 :

创建两个指针 fast和slow,让fast指针先走n+1步,然后slow和fast一起移动,然后当fast移动到最后一个节点时,slow此时指到倒数n+1节点,此时便可以执行删除操作

java 复制代码
 public ListNode removeNthFromEnd(ListNode head, int n) {
        if(head==null){return null;}
         ListNode duty=new ListNode(0);
         duty.next=head;
         ListNode fast=duty;   
         ListNode slow=duty;
         for(int i=0;i<=n;i++){
             fast=fast.next;
         }
         while(fast!=null){
             fast=fast.next;
             slow=slow.next;

         }
         slow.next=slow.next.next;
         return duty.next;
    }

之所以new一个duty让他的后继节点指向head,是因为有可能存在head节点被删除的情况,此时如果直接返回head会出现指针指空的问题,返回duty.next可以有效解决空指针问题

相关推荐
开开心心就好5 天前
用户推荐的文件解锁与强制操作工具
安全·智能手机·pdf·scala·音视频·symfony·1024程序员节
liguojun202510 天前
软硬一体智慧场馆系统推荐——助力场馆数字化高效升级
java·大数据·人工智能·物联网·1024程序员节
开开心心就好22 天前
吾爱大佬原创的文件时间修改工具
安全·智能手机·pdf·电脑·智能音箱·智能手表·1024程序员节
开开心心就好1 个月前
近200个工具的电脑故障修复合集
安全·智能手机·pdf·电脑·consul·memcache·1024程序员节
数据皮皮侠AI1 个月前
中国城市可再生能源数据集(2005-2021)|顶刊 Sci Data 11 种能源面板
大数据·人工智能·笔记·能源·1024程序员节
计算机毕业论文辅导1 个月前
物联网实战:基于MQTT协议的智能家居数据传输系统设计与实现
1024程序员节
开开心心就好1 个月前
支持批量处理的视频分割工具推荐
安全·智能手机·rust·pdf·电脑·1024程序员节·lavarel
liuyao_xianhui1 个月前
Linux开发工具结尾 _make
linux·运维·服务器·数据结构·哈希算法·宽度优先·1024程序员节
学传打活1 个月前
【边打字.边学昆仑正义文化】_21_爱的结晶(1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
数据皮皮侠AI1 个月前
顶刊同款!中国地级市风灾风险与损失数据集(2000-2022)|灾害 / 环境 / 经济研究必备
大数据·人工智能·笔记·能源·1024程序员节