python 链表倒数第k个节点_链表-删除单链表中倒数第k个节点
题目
实现一个函数,一个可以删除单链表中倒数第k个节点
难度
简单
分析
本题比较简单,实现方法多种多样,这里提供一种方法
首先明确一点,在单链表中删除倒数第k个节点,需要找到他的前一个节点,让前一个节点指向后一个节点即可。
- 如果链表为空,或者是k小于1直接返回即可。
- 除此之外从链表头走到尾,没移动一步,就让k的值减1。
下面来分析具体的过程:
- 链表1 -> 2 -> 3, k=4 , 链表不存在倒数第四个节点。
- 走过的节点为:1 ,2 ,3
- k的变化:3, 2, 1
- 链表1 -> 2 -> 3, k=3 , 链表倒数第三个节点,就是第一个节点。
- 走过的节点为:1 ,2 ,3
- k的变化:2, 1, 0
- 链表1 -> 2 -> 3, k=2 , 链表倒数第三个节点,就是第2个节点。
- 走过的节点为:1 ,2 ,3
- k的变化:1, 0, -1
由上可知,当链表移动带尾部是,一共有三种情况:
- 当k大于0的时候,说明没有倒数第k个节点,直接返回原来链表即可
- 当k等于0的时候,说明头节点就是倒数第k个节点
- 当k小于0的时候,具体如下:
- 重头重新遍历链表,每走一步k加1
- 当k等于0的时候就停止,因为这个节点就是要删除节点的前一个节点。(这也容易理解,如链表1 -> 2 -> 3, k=2,链表的长度为 n=3。此时 3-2=1,正好是2的前一个节点)
Java代码实现
public Node removeLastKthNode(Node head, int k){if(head == null || k < 1) return head;Node cur = head;while(cur != null){k--;cur = cur.next;}if(k == 0) head = head.next;if(k < 0){cur = head;while(++k != 0){cur = cur.next;}cur.next = cur.next.next;}return head;
}
加油鸭!!!
点赞冲!!!
python 链表倒数第k个节点_链表-删除单链表中倒数第k个节点相关推荐
- 链表之删除单链表倒数第K个节点
删除单链表倒数第K个节点 题目: 删除单链表中倒数第K个节点, 思路: 给我们一个单链表,我们需要删除倒数第K个节点,比如链表每个节点值是1.2.3.4.5.6 K值是 ...
- 删除链表的中间节点 Java实现_【链表问题】删除单链表的中间节点
前言 以专题的形式更新刷题贴,欢迎跟我一起学习刷题,相信我,你的坚持,绝对会有意想不到的收获.每道题会提供简单的解答,如果你有更优雅的做法,欢迎提供指点,谢谢. [题目描述] 给定链表的头节点head ...
- c语言双链表排序交换节点_图解:单链表翻转的三种方式!
当我们在聊到链表反转的时候,一定说的都是单链表,双链表本身就具有前驱指针 Prev 和后续指针 next,无需进行翻转. 单链表反转,反转后的效果如下: 看起来很简单,只需要将单链表所有结点的 nex ...
- 删除单链表中倒是第K个结点
[问题描述] 设有头结点单链表,删除单链表中倒数第k个结点. [输入形式] 第一行输入若干个整数建立带头结点的单链表(以输入字符作为结束). 第二行输入一个整数k,表示删除倒数第k个结点. [输出形式 ...
- 删除单链表中的重复节点
删除单链表中的重复节点 一.题目描述 已知单链表L,写一算法,删除其中的重复节点.(更好的阅读体验,请访问程序员在旅途) 二.分析解答 2.1 知识点分析 本题主要考察链表的相关知识点,其中包括:单链 ...
- 删除单链表中的重复节点(c语言版本)
这是一道经典的面试题,下面是我的研究和举一反三,特整理如下: 分为三种情形: (1)删除有序链表的重复节点,重复节点一个都不留 (2)删除有序链表的重复节点,重复节点只留一个 (3)删除无序链表的重复 ...
- 用O(1)的时间复杂度删除单链表中的某个节点
用O(1)的时间复杂度删除单链表中的某个节点 给定链表的头指针和一个结点指针,在O(1)时间删除该结点.链表结点的定义如下: struct ListNode {int m_nKey;ListNode* ...
- 6-2 删除单链表偶数节点 (10 分)
** 6-2 删除单链表偶数节点 (10 分) ** 本题要求实现两个函数,分别将读入的数据存储为单链表.将链表中偶数值的结点删除.链表结点定义如下: struct ListNode {int dat ...
- java单链表_(java实现)单链表
什么是单链表 在了解单链表之前,你知道什么是链表吗?如果你不知道什么是链表,可以看看我的这篇博客 单链表是链表的其中一种基本结构.一个最简单的结点结构如图所示,它是构成单链表的基本结点结构.在结点中数 ...
最新文章
- 在Relay中注册新TVM算子
- Creating a LINQ Enabled ASP.NET Web application template using C#.[转]
- iOS进阶之架构设计MVVM的理解(3)
- python开发微信小程序-微信小程序开发:python+sanic 实现小程序登录注册
- 【开发工具】Spark Shell 的使用
- 什么时候考虑使用神经网络
- java接口常见问题分析_常见问题 - Apache ServiceComb
- 【转】[技术回顾系列]--WebService事务处理
- Linux全攻略--Squid服务器配置与管理
- 二叉树查找后继节点(即中序遍历情况下的这个节点的下一个) Python实现
- java vector 实现二维数组
- 理解JVM(五):Java内存模型与线程
- java关键字有多少?
- 2021年电视盒子推荐指南 电视盒子选购以及常见问题
- C语言malloc的用法和意义
- 南航计算机学院院长黄志球简历,南航计算机科学与技术学院导师介绍:沈国华...
- 直方图均衡化及算法步骤
- Cocos Studio images文件与CSB的路径相对关系
- android版本5.1下载,嘉兴禾点点下载-禾点点 安卓版v5.1.1-PC6安卓网
- 企业微信群发消息提醒
热门文章
- spring javaee_JavaEE还是Spring? 都不行! 我们呼吁新的竞争者!
- java 线程什么时候出栈_在Java中给出的时间
- 在雅加达EE TCK中使用Arquillian的可能方法
- java 解析日期格式_日期/时间格式/解析,Java 8样式
- java 字符串对齐_最佳字符串对齐的Java实现
- maven 父maven_Maven的春天
- ssh 看apache_使用Apache KeyedObjectPool的ssh连接池
- mongodb 持久性_多语言持久性:带有MongoDB和Derby的EclipseLink
- jsf服务_使用JSF的面向服务的UI
- 通过微调JVM Garbage Collector减少Java IDE滞后