题目

实现一个函数,一个可以删除单链表中倒数第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

由上可知,当链表移动带尾部是,一共有三种情况:

  1. 当k大于0的时候,说明没有倒数第k个节点,直接返回原来链表即可
  2. 当k等于0的时候,说明头节点就是倒数第k个节点
  3. 当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个节点相关推荐

  1. 链表之删除单链表倒数第K个节点

    删除单链表倒数第K个节点 题目: 删除单链表中倒数第K个节点, 思路:             给我们一个单链表,我们需要删除倒数第K个节点,比如链表每个节点值是1.2.3.4.5.6     K值是 ...

  2. 删除链表的中间节点 Java实现_【链表问题】删除单链表的中间节点

    前言 以专题的形式更新刷题贴,欢迎跟我一起学习刷题,相信我,你的坚持,绝对会有意想不到的收获.每道题会提供简单的解答,如果你有更优雅的做法,欢迎提供指点,谢谢. [题目描述] 给定链表的头节点head ...

  3. c语言双链表排序交换节点_图解:单链表翻转的三种方式!

    当我们在聊到链表反转的时候,一定说的都是单链表,双链表本身就具有前驱指针 Prev 和后续指针 next,无需进行翻转. 单链表反转,反转后的效果如下: 看起来很简单,只需要将单链表所有结点的 nex ...

  4. 删除单链表中倒是第K个结点

    [问题描述] 设有头结点单链表,删除单链表中倒数第k个结点. [输入形式] 第一行输入若干个整数建立带头结点的单链表(以输入字符作为结束). 第二行输入一个整数k,表示删除倒数第k个结点. [输出形式 ...

  5. 删除单链表中的重复节点

    删除单链表中的重复节点 一.题目描述 已知单链表L,写一算法,删除其中的重复节点.(更好的阅读体验,请访问程序员在旅途) 二.分析解答 2.1 知识点分析 本题主要考察链表的相关知识点,其中包括:单链 ...

  6. 删除单链表中的重复节点(c语言版本)

    这是一道经典的面试题,下面是我的研究和举一反三,特整理如下: 分为三种情形: (1)删除有序链表的重复节点,重复节点一个都不留 (2)删除有序链表的重复节点,重复节点只留一个 (3)删除无序链表的重复 ...

  7. 用O(1)的时间复杂度删除单链表中的某个节点

    用O(1)的时间复杂度删除单链表中的某个节点 给定链表的头指针和一个结点指针,在O(1)时间删除该结点.链表结点的定义如下: struct ListNode {int m_nKey;ListNode* ...

  8. 6-2 删除单链表偶数节点 (10 分)

    ** 6-2 删除单链表偶数节点 (10 分) ** 本题要求实现两个函数,分别将读入的数据存储为单链表.将链表中偶数值的结点删除.链表结点定义如下: struct ListNode {int dat ...

  9. java单链表_(java实现)单链表

    什么是单链表 在了解单链表之前,你知道什么是链表吗?如果你不知道什么是链表,可以看看我的这篇博客 单链表是链表的其中一种基本结构.一个最简单的结点结构如图所示,它是构成单链表的基本结点结构.在结点中数 ...

最新文章

  1. 在Relay中注册新TVM算子
  2. Creating a LINQ Enabled ASP.NET Web application template using C#.[转]
  3. iOS进阶之架构设计MVVM的理解(3)
  4. python开发微信小程序-微信小程序开发:python+sanic 实现小程序登录注册
  5. 【开发工具】Spark Shell 的使用
  6. 什么时候考虑使用神经网络
  7. java接口常见问题分析_常见问题 - Apache ServiceComb
  8. 【转】[技术回顾系列]--WebService事务处理
  9. Linux全攻略--Squid服务器配置与管理
  10. 二叉树查找后继节点(即中序遍历情况下的这个节点的下一个) Python实现
  11. java vector 实现二维数组
  12. 理解JVM(五):Java内存模型与线程
  13. java关键字有多少?
  14. 2021年电视盒子推荐指南 电视盒子选购以及常见问题
  15. C语言malloc的用法和意义
  16. 南航计算机学院院长黄志球简历,南航计算机科学与技术学院导师介绍:沈国华...
  17. 直方图均衡化及算法步骤
  18. Cocos Studio images文件与CSB的路径相对关系
  19. android版本5.1下载,嘉兴禾点点下载-禾点点 安卓版v5.1.1-PC6安卓网
  20. 企业微信群发消息提醒

热门文章

  1. spring javaee_JavaEE还是Spring? 都不行! 我们呼吁新的竞争者!
  2. java 线程什么时候出栈_在Java中给出的时间
  3. 在雅加达EE TCK中使用Arquillian的可能方法
  4. java 解析日期格式_日期/时间格式/解析,Java 8样式
  5. java 字符串对齐_最佳字符串对齐的Java实现
  6. maven 父maven_Maven的春天
  7. ssh 看apache_使用Apache KeyedObjectPool的ssh连接池
  8. mongodb 持久性_多语言持久性:带有MongoDB和Derby的EclipseLink
  9. jsf服务_使用JSF的面向服务的UI
  10. 通过微调JVM Garbage Collector减少Java IDE滞后