博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
给定一个链表,删除链表的倒数第 n 个节点(已知该结点存在),并且返回链表的头结点。...
阅读量:6476 次
发布时间:2019-06-23

本文共 688 字,大约阅读时间需要 2 分钟。

思路:

找到倒数第n个结点的前一个结点,让该结点的后继为倒数第n个结点的后继

子问题:找到倒数第n个结点的前驱        1.有两个引用,第一个引用指向首节点,然后走n步        2.第二个结点指向首节点,此时两结点之间隔了n-1个结点,保持这样的距离,共同向后移动        3.当第一个引用到达尾节点时,第二个引用离尾节点有n-1个结点,        4.此时第二个结点为倒数第n+1个结点,即倒数第n个结点的前驱    特殊情况:        1.链表只有一个结点或者为空链表,直接返回空即可;        2.链表的长度刚好等于n,即删除首节点,第一个引用从头结点开始移动n步后,        第一个引用移动到了尾节点的下一个,即此时第一个引用为空,        出现第一个在移动n步后为空的情况时,说明要删除的是首节点,直接将首节点定为首节点的下一个即可

参考代码:

public static ListNode removeNthFromEnd(ListNode head, int n) {        //如果链表本身为空或者只有一个结点,直接返回空即可        if(head==null||head.next==null){            return null;        }        ListNode cur=head;        ListNode pre=head;        for(int i=0;i

转载于:https://blog.51cto.com/14233363/2404532

你可能感兴趣的文章
Matlab编程之——卷积神经网络CNN代码解析
查看>>
白洋淀周末游
查看>>
三篇文章了解 TiDB 技术内幕 —— 说计算
查看>>
copy strong weak assign的区别
查看>>
OpenCV 入门
查看>>
css 3D transform变换
查看>>
ele表格合并行之后的selection选中
查看>>
正则表达式分解剖析(一文悟透正则表达式)
查看>>
解决UILable标点符号居中的问题
查看>>
HTML5新特性教程
查看>>
SpringBoot 实战 (十七) | 整合 WebSocket 实现聊天室
查看>>
ImageOptim-无损图片压缩Mac版
查看>>
12 Go语言map底层浅析
查看>>
vue-resumer 项目中 element-ui 遇到的 textarea autosize 问题
查看>>
以主干开发作为持续交付的基础
查看>>
PHP扩展库PEAR被攻击,近半年下载者或被影响
查看>>
传统运维团队转型应该注意哪些问题?
查看>>
JavaScript函数(二)
查看>>
Airbnb改进部署管道安全性,规范部署顺序
查看>>
腾讯最大规模裁撤中层干部,让贤年轻人
查看>>