1.题目
输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。
如果该链表长度小于k,请返回一个长度为 0 的链表。
2.解法
快指针走k步,慢指针才开始走,等到快指针到达时,慢指针正好在倒数第k个位置。
public ListNode FindKthToTail(ListNode pHead, int k) {
// write code here
if(pHead==null) return null;
ListNode slow = pHead, fast = pHead;
while (k--!= 0) {
if(fast==null) return null;
fast = fast.next;
}
while (fast != null) {
fast = fast.next;
slow = slow.next;
}
return slow;
}
总结
快指针走k步,慢指针才开始走,等到快指针到达时,慢指针正好在倒数第k个位置。
算法系列在github上有一个开源项目,主要是本系列博客的demo代码。https://github.com/forestnlp/alg
如果您对软件开发、机器学习、深度学习有兴趣请关注本博客,将持续推出Java、软件架构、深度学习相关专栏。
您的支持是对我最大的鼓励。