码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 牛客—链表中倒数第k个结点


    本次写的题目是链表中倒数第k个结点,为牛客网里面的题目,让我们来康康是如何解出这道题目的吧,各位尚没有思路的小伙伴可以跟随着博主的解题思路一步步来,感受一下😎

    🌱分析阶段

     在写这道题我们可以特别直接地想出第一种解决方法:暴力解法。

    🍃方法一:暴力解法

    这种解法是将整个链表遍历一遍后得到了链表长度后,再遍历一遍数组,直到找到倒数第k个结点,但这种解法的还不够简便。

    🍃方法二:

    该方法用到的还是快慢结点的技巧,但是与之前的快慢结点技巧不同的是,原本的快慢结点是让快结点两步两步走,然后慢结点一步一步走。在本题中的快慢结点技巧是让快结点先走k步,然后快慢结点一起一步一步走。

    最初的快慢结点技巧👇:

    本题中使用到的快慢结点技巧👇:

     使用该技巧后不需要将链表遍历多遍,大大提升了效率😎


    🌱代码阶段

    在我们正式写代码前,先考虑一下有无特殊情况,在本题中要考虑的是三种特殊情况:①当链表为空链表的时候;②当要k的数值为小于或者等于0的时候;③当k的数值大于其本身链表长度的时候。

    处理前两个特殊情况,只需写出下面的代码👇:

    1. public class Solution {
    2. public ListNode FindKthToTail(ListNode head,int k) {
    3. if(head==null) return null; //当链表中没有结点的时候,我们直接返回null
    4. if(k<=0) return null; //当k小于或等于0的时候,没有该种结点,返回null
    5. }
    6. }

    而要解决第三种特殊情况,我们则需要在快结点跑第k位置上的时候进行判断👇:

    1. public class Solution {
    2. public ListNode FindKthToTail(ListNode head,int k) {
    3. if(head==null) return null; //当链表中没有结点的时候,我们直接返回null
    4. if(k<=0) return null; //当k小于或等于0的时候,没有该种结点,返回null
    5. ListNode cur = head;
    6. ListNode quick = head;
    7. while(k>0){
    8. quick = quick.next;
    9. if(quick==null&&k>1){ //当已经为null而k还是大于1的时候,证明k大于链表的整个长度了
    10. return null;
    11. }
    12. k--;
    13. }
    14. while(quick!=null){
    15. quick = quick.next;
    16. cur = cur.next;
    17. }
    18. return cur;
    19. }
    20. }

    至此,代码就写完了😎跑一遍逝逝吧

     nice😎✨


    以上!便是全部的啦😎

    又是收获满满的一天~

  • 相关阅读:
    【C++心愿便利店】No.9---C++之内存管理
    RGB转MIPI转换板制作(2)
    【计算机视觉 | 语义分割】语义分割常用数据集及其介绍(一)
    5 分钟,教你用 Docker 部署一个 Python 应用
    Java微服务监控及与普罗米修斯集成
    华为机试 - 水仙花数Ⅱ
    【LeetCode回溯算法#07】子集问题I+II,巩固解题模板并详解回溯算法中的去重问题
    诺亚财富 X Hologres : 统一OLAP分析引擎,全面打造金融数字化分析平台
    深度学习在图像处理中的应用学习笔记
    uni-app调用Native.jsAPI实现对Android原生日历的增删查操作
  • 原文地址:https://blog.csdn.net/Green_756/article/details/126306301
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号