02.02、返回倒数第k个节点
- 游戏开发
- 2025-09-13 10:30:02

02.02、[简单] 返回倒数第 k 个节点 1、题目描述
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。
2、题解思路本题的关键在于使用双指针法,通过两个指针(fast 和 slow),让 fast 指针比 slow 指针先走 k 步,这样当 fast 到达链表末尾时,slow 正好指向倒数第 k 个节点。
具体步骤如下:
初始化两个指针 fast 和 slow,都指向链表的头节点。让 fast 先走 k 步,使得 fast 和 slow 之间的距离为 k。同时移动 fast 和 slow,直到 fast 到达链表的末尾。此时,slow 指针所指向的节点就是倒数第 k 个节点,返回该节点的值。 3、详细代码解析 class Solution { public: int kthToLast(ListNode* head, int k) { // 初始化两个指针,分别指向链表的头节点 ListNode* fast = head; ListNode* slow = head; // 让 fast 指针先走 k 步 while (k--) { fast = fast->next; } // 同时移动 fast 和 slow,直到 fast 到达链表的末尾 // 当 fast 到达链表末尾时,slow 则正好指向倒数第 k 个节点,返回该节点的值 while (fast) { fast = fast->next; slow = slow->next; } // slow 现在指向倒数第 k 个节点,返回该节点的值 return slow->val; } }; 4、时间复杂度与空间复杂度 时间复杂度:O(n),其中 n 为链表的长度。由于我们只遍历了链表一次,因此时间复杂度是线性的。空间复杂度:O(1),只用了两个指针,空间开销很小。通过使用双指针技巧,我们可以在一次遍历中高效地找到倒数第 k 个节点。这个解法在不需要额外空间的情况下,能够很好地解决问题。
02.02、返回倒数第k个节点由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“02.02、返回倒数第k个节点”