单链表中倒数第k个节点
题目:
输入一个链表,输出该链表中倒数第k个结点。
示例:
1->2->3->4->5->6,输出倒数第3个结点,输出结果为:4。
思路一: 使用双指针。
① 定义两个指针,分别记作:front、behind。
② 要求倒数第k个节点,我们就可以让front先往前走k步,然后front和behind一起向前走,当front == null时,behind所指向的结点就是倒数第k个结点。
③ 注意 k 的合法性。
图示:
定义behind、front两个指针。都先指向链表中第一个结点。

我们假设k = 2,此时让front先往前走k步,如下图所示:

此时,behind、front同时向前走,直到front为null时,behind所指向的结点就是倒数第2个结点,如下图所示:

代码实现
public ListNode FindKthToTail (ListNode pHead, int k) {
if

本文介绍了如何在单链表中找到倒数第k个节点的方法,包括使用双指针和栈两种策略。双指针策略通过设置两个指针,让其中一个先走k步,然后两者同步前进,直到前一个指针到达链表末尾。栈策略则利用栈的先进后出特性,将链表节点入栈,然后依次出栈,第k个出栈的节点即为倒数第k个节点。
最低0.47元/天 解锁文章
285

被折叠的 条评论
为什么被折叠?



