题目链接

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. MySQL 添加用户,分配权限

    1. 添加用户 CREATE USER `vipsoft`@`%` IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER; 2. 权限配置 GRANT 权限1,权限 ...

  2. ChatGpt玩法(一):prompt使用的重要性

    前言 登录https://www.topgpt.one即可免费体验ChatGPT带来的强大魅力. ChatGpt是一个强大的自然语言处理工具,可以用于多种任务,如文本生成.问答系统以及对话生成等等.其 ...

  3. 邮箱发送SMARTFORMS 转 PDF附件

    事务代码smartforms创建一个表单ZTEST001 将表单转换成PDF并添加到邮件的附件中发送给用户 "---------------------------------------- ...

  4. 题解 | CF1328F. Make k Equal (思维,前缀 & 后缀和)

    题目链接:Here 题意:把 \(n\) 个数变成 \(k\) 个相同的数,每次可以把 \(n\) 个数里最大的 \(-1\) 或最小的 \(+1\) ,问最小改变次数 思路: 我们可以枚举,把 \( ...

  5. 畅捷通的 Serverless 探索实践之路

    作者:计缘 畅捷通介绍 畅捷通是中国领先的小微企业财税及业务云服务提供商,成立于2010年.畅捷通在2021年中国小微企业云财税市场份额排名第一,在产品前瞻性及行业全覆盖方面领跑市场,位居中国小微企业 ...

  6. 08.25北京站|阿里云Serverless 技术实践营( AI 专场)开放报名

    活动简介 阿里云 Serverless 技术实践营(AI 专场)是一场以聚焦企业级 AIGC 应用开发与落地展开的主题活动,活动受众以关注 Serverless 和 AI 技术的开发者.企业决策人.云 ...

  7. git branch 分支命令图文详解

    https://blog.csdn.net/wangdawei_/article/details/124556712 git branch 分支命令详解git branch (查看本地分支)git b ...

  8. 《vuejs快跑构建触手可及的高性能web应用》读书笔记

    1.cdn:内容分发网络(CDN)是将资源托管到全世界各处的服务器上以实现快速分发.CDN版本对于开发和快速验证比较有用,但是将unpkg应用于生产环境前,需要检查它是否适合你. 2.假值包括fals ...

  9. 每天学五分钟 Liunx 0000 | 存储篇:GlusterFS

    GlusterFS GlusterFS,是一个分布式文件系统,它通过 TCP/IP 或 IB(InfiniBand RDMA)网络将多个存储资源整合在一起,提供存储服务,具有很强的可扩展能力.   G ...

  10. 每天学五分钟 Liunx 110 | 存储篇:RAID

    RAID RAID 是廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks)的意思.通过它可以将较小的磁盘组成较大的磁盘.   RAID 模式 RAID 有几种模 ...