当前位置: 首页 > news >正文

返回倒数第k个节点

返回倒数第k个节点

在这里插入图片描述
思路1:首先计算链表长度,让链表长度-倒数第k得到的数字(ret),定义一个变量cur指向头节点,让cur走上ret次,即可找到倒数第k个节点

class Solution {public int size(ListNode head){if(head==null){return 0;}ListNode cur=head;int count =0;while (cur!=null){count++;cur=cur.next;}return count;}public int kthToLast(ListNode head, int k) {int count=size(head);ListNode cur=head;int ret=count-k;while(ret!=0){cur=cur.next;ret--;}return cur.val;}
}

思路1需要遍历链表两次,有没有只遍历一次,就能找到倒数第k个节点呢?

思路2:定义那个变量指向头节点分别为fast和slowfast比slow多走k步,当fast指向的对象为空时,slow就指向倒数第k个节点啦
1.初始化双指针 fast , slow都指向头节点 head ;
2.先令 fast 走 k 步,此时fast , slow 的距离为 k ;
3.令 fast , slow一起走,直到 cur 走过尾节点时跳出,此时 pre 指向「倒数第 k 个节点」,返回之即可

class Solution {public int kthToLast(ListNode head, int k) {ListNode fast=head;ListNode slow=head;while(fast!=null){while (k!=0){//让fast多走k步fast=fast.next;k--;}fast=fast.next;slow=slow.next;}return slow.val;}
}

http://www.mrgr.cn/news/33488.html

相关文章:

  • 三阶魔方还原法 勾上回下 上右左左右
  • 字节数据转16进制对应十进制数
  • 【基础算法总结】模拟篇
  • C++之模版的进阶
  • arm-硬件
  • 240922-Conda的在线下载与离线安装
  • LeetcodeTop100 刷题总结(二)
  • 如何用Shell命令结合 正则表达式 统计文本中的ip地址数量
  • 【LeetCode热题100】位运算
  • MELON的难题- 华为OD统一考试(E卷)
  • Cpp类和对象(中)(4)
  • TryHackMe 第3天 | Pre Security (二)
  • 微信小程序教程:如何在个人中心实现头像贴纸功能
  • 英语(二)-写作常用词汇和句型范文
  • [Linux]用户管理指令
  • 2024/9/22 英语每日一段
  • [JavaEE] 网络编程----UDP / TCP 回显服务器
  • 华为OD机试 - N个选手比赛前三名、比赛(Python/JS/C/C++ 2024 E卷 100分)
  • 【原创】java+swing+mysql仓库管理系统设计与实现
  • 238 除自身以外数组的乘积