
力扣-面试题 02.02题(Java)
遍历链表:从链表头节点开始,逐个遍历每个节点。 记录节点值:将每个节点的值添加到一个列表中。 计算倒数第k个节点:在遍历完成后,从列表中取出第k个位置的值。 初始化ArrayList:创建一个ArrayList来存储链表节点的值。 遍历链表:使用while循环从链表头节点开始遍历,直到遇到null(即链表末尾)。 添加节点值:在每次循环中,将当前节点的值添加到ArrayList中。 返回结果:从ArrayList中取出倒数第k个元素,即
发布日期:2021-05-10 02:27:08
浏览次数:25
分类:精选文章
本文共 1107 字,大约阅读时间需要 3 分钟。
单向链表的kthToLast问题是指,在给定一个单向链表和一个整数k时,返回链表中倒数第k个节点的值。这个问题可以通过遍历链表并记录节点值到一个列表中,然后从列表末尾取出第k个元素来解决。
问题分析
给定一个单向链表节点类:
class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}
目标是实现一个方法kthToLast,参数为链表头节点head和整数k,返回链表中倒数第k个节点的值。
解决方案
我们可以采用以下步骤来解决这个问题:
优化代码实现
以下是优化后的代码实现:
class Solution { public int kthToLast(ListNode head, int k) { // 使用ArrayList来存储链表节点的值 ArrayListlist = new ArrayList<>(); // 遍历链表节点 while (head != null) { list.add(head.val); head = head.next; } // 从列表末尾取出第k个元素 return list.get(list.size() - k); }}
代码解释
list.get(list.size() - k)
。优化说明
- 变量命名清晰:代码中使用了更具描述性的变量名,如list替代了原来的array。
- 代码简洁:优化后的代码逻辑清晰,步骤明确,易于理解。
- 注释补充:虽然没有添加额外的注释,但代码本身的结构和命名已经很清晰,能够直接阅读和理解。
这个解决方案通过一次遍历链表,时间复杂度为O(n),空间复杂度为O(n),其中n是链表的节点数。这种方法在大多数情况下都是高效且可行的。
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月07日 20时11分15秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
83. Remove Duplicates from Sorted List
2019-03-06
Nmap扫描工具介绍
2019-03-06
常用Windows 快捷键
2019-03-06
linux命令-压缩与打包
2019-03-06
oracle 11g not in 与not exists 那个高效?
2019-03-06
玩玩小爬虫——试搭小架构
2019-03-06
Javascript之旅——第九站:吐槽function
2019-03-06
Sql Server之旅——第十站 看看DML操作对索引的影响
2019-03-06
双十一来了,别让你的mongodb宕机了
2019-03-06
深入探索Android热修复技术原理读书笔记 —— 热修复技术介绍
2019-03-06
Python大神编程常用4大工具,你用过几个?
2019-03-06
一文带你了解图神经网络
2019-03-06
centos7一步一步搭建docker jenkins 及自定义访问路径重点讲解
2019-03-06
【Flink】Flink 底层RPC框架分析
2019-03-06
MySQL错误日志(Error Log)
2019-03-06
oracle使用DBMS_RANDOM包生成随机数据
2019-03-06