.从列表结束中删除第N个节点
描述
给定一个链表,从列表的最后删除倒数第n个元素
例如:
给定链表:1-> 2-> 3-> 4-> 5,并且n = 2。 删除倒数第二个,链表将变为1-> 2-> 3-> 5。
链表定义:
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
我的方法
public ListNode removeNthFromEnd(ListNode head, int n) {
if(n==0) return head;
int len=0;
ListNode temp = head;
//检测出链表长度
while(temp.next != null){
len++;
temp = temp.next;
} //如果要取出的是链表头,那么直接返回链表下一个引用
if(len-n+1 == 0) return head.next; //特殊情况:当要去掉的是末尾元素时
if(n==1){
//特殊情况中的特殊情况:当链表只有一项,且要取出的是结尾元素,那么就相当于清空链表,返回控制内即可
if(len==0){
return null;
}
//当链表长度>1时
int i=0;
temp = head;
while(i<len-1){
i++;
temp = temp.next;
}
temp.next = null;
return head;
} //一般状况
//找到要跳过的那个元素的前一个元素,让这个元素的指针指向下一个的下一个元素:temp.next.next
int i=0;
temp = head;
while(i < len-n){
temp = temp.next;
i++;
}
temp.next = temp.next.next;
return head;
}
leetcode讨论区的方法
public ListNode removeNthFromEnd1(ListNode head, int n) { ListNode start = new ListNode(0);
ListNode slow = start, fast = start;
slow.next = head; //移动快指针,让快指针与慢指针的距离为n,即慢指针落后n+1位此时慢指针的next还是head
for(int i=1; i<=n+1; i++) {
fast = fast.next;
}
//同时移动快慢指针,当快指针到达最后时,慢指针指向的正好是要跳过的节点的父节点
while(fast != null) {
slow = slow.next;
fast = fast.next;
}
//跳过这个节点
slow.next = slow.next.next;
return start.next;
}
.从列表结束中删除第N个节点的更多相关文章
- java笔试之从单向链表中删除指定值的节点
输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针. 链表的值不能重复 构造过程,例如 1 -> 2 3 -> 2 5 -> 1 4 ...
- 删除链表的中间节点和a/b处节点
[说明]: 本文是左程云老师所著的<程序员面试代码指南>第二章中“删除链表的中间节点和a/b处节点”这一题目的C++复现. 本文只包含问题描述.C++代码的实现以及简单的思路,不包含解析说 ...
- 删除RAC集群节点
删除GRID集群节点:参考oracle database 11g RAC手册(第二版) 目前GRID集群中节点信息:[grid@node1 ~]$ olsnodesnode1node2node3nod ...
- android中列表的滑动删除仿ios滑动删除
大家是不是觉得ios列表的滑动删除效果很酷炫?不用羡慕android也可以实现相同的效果 并且可以自定义效果,比如左滑删除,置顶,收藏,分享等等 其实就是自定义listview重写listview方法 ...
- Java循环中删除一个列表元素
本文主要想讲述一下我对之前看到一篇文章的说法.假设跟你的想法有出入,欢迎留言.一起讨论. #3. 在循环中删除一个列表元素 考虑以下的代码.迭代过程中删除元素: ArrayList<String ...
- Loadrunner查询博客列表并循环删除博客列表中的所有博客
Loadrunner查询博客列表并循环删除博客列表中的所有博客,在博客列表请求中使用关联,获取出列表中博客的数量,并找出博客列表请求的必要参数.关联使用Ordinal=All 找出所有匹配值 查找出所 ...
- Python 中删除列表元素的三种方法
列表基本上是 Python 中最常用的数据结构之一了,并且删除操作也是经常使用的. 那到底有哪些方法可以删除列表中的元素呢?这篇文章就来总结一下. 一共有三种方法,分别是 remove,pop 和 d ...
- lintcode:Remove Nth Node From End of Lis 删除链表中倒数第n个节点
题目: 删除链表中倒数第n个节点 给定一个链表,删除链表中倒数第n个节点,返回链表的头节点. 样例 给出链表1->2->3->4->5->null和 n = 2. 删除 ...
- 使用easyui实现列表的批量删除
使用easyui实现列表的批量删除 首先要做的就是增加一个多选框 <table id="otGrid" nowrap="false" style=&quo ...
随机推荐
- jQuery的简单函数
1. jQuery函数的基本语法: $(document).ready(function(){ //代码块: }) 2.window.onload()和$(document).ready()的区分: ...
- JS 匿名函数或自执行函数总结
JS引擎在遇到function关键字时做如下两种处理: 1.当语句是以function关键字开头:此时的JS语句解释为函数声明,因此function关键字后面必须要跟函数名字,如果写成匿名函数,则会报 ...
- rem和em的用法
1.rem转化为向素值的方法 rem单位转化为像素大小取决于根元素的字体大小,即HTML元素的字体大小,根元素字体大小乘以rem. 例:根元素的字体大小 16px,10rem 将等同于 160px,即 ...
- Asp.Net Core使用Log4Net优化日志【项目开源】
我在前一篇文章中介绍了一种使用Log4Net的方法,但是那种方法打出来的日志不是很直观 然后我前不久阅读了一篇非常不错的博客:https://www.cnblogs.com/guolianyu/p/9 ...
- python__基础 : 多继承中方法的调用顺序 __mro__方法
在多继承中,如果一个子类继承了两个平级的父类,而这两个父类有两个相同名字的方法,那么一般先继承谁,调用方法就调用先继承的那个父类的方法.如: class A: def test(self): prin ...
- windows下nginx的安装
一. 下载 http://nginx.org/ (下载后解压) 二. 修改配置文件 nginx配置文件在 nginx-1.8.0\conf\nginx.conf http { gzip on; ...
- django创建第一个子应用-3
在Web应用中,通常有一些业务功能模块是在不同的项目中都可以复用的,故在开发中通常将工程项目拆分为不同的子功能模块,各功能模块间可以保持相对的独立,在其他工程项目中需要用到某个特定功能模块时,可以将该 ...
- python学习笔记~INI、REG文件读取函数(自动修复)
引入configparser,直接read整个INI文件,再调用get即可.但需要注意的是,如果INI文件本身不太规范,就会报各种错,而这又常常不可避免的.本文自定义函数通过try...except. ...
- JavaSE思维导图
Java基础知识: 面向对象: 集合: 多线程.网络编程.反射.设计模式: 常用API: 转载 https://blog.csdn.net/qq_34983808/article/detai ...
- 北京Uber优步司机奖励政策(1月23日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...