链表面试题1:求链表中倒数第K个结点
-
分析题目:
-
根据题意可知,此链表为单向链表,无法从尾端回溯K步。
-
我们按照从k=1开始计数,即链表的倒数第一个结点是链表最后一个结点
-
-
解题思路:
-
方法一:
-
1、先遍历一遍链表,统计链表中结点的个数N(每经过一个结点计数器加1)
-
2、从链表的头节点开始遍历N-K步即可找到倒数第K个结点(假设共6个结点,求倒数第二个结点,即为整数第5个,需要从头节点向后走4步(N-K))
-
此方法需要遍历两次链表
-
-
方法二:
-
1、定义两个指针均指向头节点
-
2、第一个指针先向前走K-1步,然后两个指针再同步向前
-
3、当第一个指针指向最后一个结点时,第二个指针指向倒数第K个结点
-
此方法只遍历一次链表
-
-
-
图解法二:

-
代码实现

这篇博客介绍了如何解决链表面试题——寻找倒数第K个节点的问题。提供了两种解题思路:第一种是先遍历链表计算节点总数,再从头节点开始寻找;第二种是使用双指针,一个先走K-1步,然后同步移动。文章强调了算法的正确性和边界条件的处理,并给出了测试用例。

3514

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



