题目链接

https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/

题目内容

输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。

示例:

给定一个链表: 1->2->3->4->5, 和 k = 2.

返回链表 4->5.

分析

以案例分析:

输入 1->2->3->4->5, 和 k = 2.

初始状态如下;

使用两个节点,两个节点都同时指向第一个节点;

然后让其中一个节点移动 k 个位置;

然后让两个节点同时移动,直到先移动的节点指向 null;

由这个例子可以得出解法如下:

1、首先初始化两个节点(可以只初始化一个节点,其中一个节点使用传过来的参数),两个节点都指向第一个节点;

2、先让其中一个节点移动 k个位置;

3、同时让两个节点移动,直到先移动的节点指向 null便结束。

需要注意的问题:

如果该链表长度不到 k怎么办呢?

如果传入的 k 正好是链表长度怎么办呢?

由于上面两个问题得到下面的解决办法:

定义一个整型变量,记录先移动节点第一次移动的次数;

如果先移动节点移动次数小于 ** k ** 且先移动指针指向 null了,证明原链表长度小于 k ,直接返回 null即可。

如果不然就直接再进行循环就可以了。

这样同时也解决了传入的k正好是链表长度的问题,因为此时先移动的节点为null,此时另一个节点不用移动即可,正好是倒数第k个节点。

代码

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode getKthFromEnd(ListNode head, int k) { ListNode nodeNew = head;
int num = 0;
for(int i=0;i<k&&nodeNew!=null;i++){
nodeNew = nodeNew.next;
num++;
}
if(num < k && nodeNew == null)
return null;
while(nodeNew!=null){
head = head.next;
nodeNew = nodeNew.next;
} return head;
}
}

欢迎关注

欢迎大家的关注

扫描下方的二维码关注我的微信公众号:code随笔

Leetcode 面试题22. 链表中倒数第k个节点 Java语言求解的更多相关文章

  1. LeetCode 面试题22. 链表中倒数第k个节点

    题目链接:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/ 输入一个链表,输出该链表中倒数第 ...

  2. 【剑指offer】面试题 22. 链表中倒数第 K 个节点

    面试题 22. 链表中倒数第 K 个节点

  3. C语言面试题22. 链表中倒数第k个节点

    要求:输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5.6. ...

  4. 【剑指Offer】面试题22. 链表中倒数第k个节点

    题目 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5.6. ...

  5. 力扣题解-面试题22. 链表中倒数第K个节点

    题目描述 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5. ...

  6. 《剑指offer》面试题22. 链表中倒数第k个节点

    问题描述 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5. ...

  7. LeetCode 剑指 Offer 22. 链表中倒数第k个节点

    剑指 Offer 22. 链表中倒数第k个节点 题意 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. ​ 例如,一个链表有 6 个 ...

  8. 【剑指offer】22. 链表中倒数第k个节点

    剑指 Offer 22. 链表中倒数第k个节点 知识点:链表:双指针 题目描述 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. 例 ...

  9. 剑指 Offer 22. 链表中倒数第k个节点

    剑指 Offer 22. 链表中倒数第k个节点 Offer 22 常规解法 常规解法其实很容易可以想到,只需要先求出链表的长度,然后再次遍历取指定长度的链接即可. package com.walega ...

  10. 力扣 - 剑指 Offer 22. 链表中倒数第k个节点

    题目 剑指 Offer 22. 链表中倒数第k个节点 思路1(栈) 既然要倒数第k个节点,那我们直接把所有节点放到栈(先进后出)里面,然后pop弹出k个元素就可以了 代码 class Solution ...

随机推荐

  1. 企业如何高效平滑迁移数据?火山引擎DataLeap上线整库搬迁解决方案

     更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   近日,火山引擎大数据研发治理套件DataLeap上线整库搬迁解决方案,包括整库离线同步.整库实时同步两大能力 ...

  2. JVM学习-自动内存管理

    文章原文:https://gaoyubo.cn/blogs/6997cf1f.html 一.运行时数据区 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域 ...

  3. Django 使用swagger自定义自动生成类

    完整代码:https://gitee.com/mom925/django-system之前写的Django配置swagger(https://www.cnblogs.com/moon3496694/p ...

  4. 100天搞定机器学习|Day59 主成分分析(PCA)原理及使用详解

    数学概念 方差:用来衡量随机变量与其数学期望(均值)之间的偏离程度.统计中的方差(样本方差)是各个数据分别与其平均数之差的平方的和的平均数. $$Var(X)=\frac{1}{n}\sum(x_i- ...

  5. 2018年第九届 蓝桥杯A组 C/C++决赛题解

    蓝桥杯历年国赛真题汇总:Here 1.三角形面积 已知三角形三个顶点在直角坐标系下的坐标分别为: (2.3, 2.5) (6.4, 3.1) (5.1, 7.2) 求该三角形的面积. 注意,要提交的是 ...

  6. OKR之剑·实战篇04:OKR执行过程优化的那些关键事

    作者:vivo 互联网平台产品研发团队 本文是<OKR 之剑>系列之实战第 4 篇--OKR执行过程不是一成不变的,团队和个人在执行中不断优化执行的具体行动,保障OKR的高效执行. 前言 ...

  7. PostMan——安装使用教程(图文详解)

    https://blog.csdn.net/m0_61843874/article/details/123324727 postman使用教程1-安装与使用: https://www.cnblogs. ...

  8. localstorage、sessionstorage 存储布尔值要注意

    今天实现一个功能,点击首页,头部按钮,切换大屏功能.不同的屏,页头宽度不一样,小屏1280px,  大屏百分百屏幕,左右留点120px的padding值. 思路:点击按钮,切换不同的子路由,顶部通过一 ...

  9. node做服务器

    // 用于创建网站服务器的模块 const http = require('http'); // 创建web服务器,app对象就是网站服务器对象 const app = http.createServ ...

  10. idea报错 "cannot access ..."的解决办法

    File -> Invalidate Caches -> Invalidate and Restart