剑指offer(十四)——链表中倒数第k个结点
剑指offer(十四)——链表中倒数第k个结点
题目描述 输入一个链表,输出该链表中倒数第k个结点。 题解
public static ListNode FindKthToTail(ListNode head,int k) {
ListNode postNode = null;
ListNode preNode = null;
if (k <= 0) {
return postNode;
}else {
int flag = 0;
postNode = head;
preNode = head;
while(preNode != null) {
if (++flag > k) {
postNode = postNode.next;
}
preNode = preNode.next;
}
return k <= flag ? postNode : null;
}
讲一下思路,就是设两个指针–前指针preNode和后指针postNode指向头结点head,前指针先移动,后指针等到前指针移动了k个结点后才开始移动,那么前指针遍历完整个链表时,后指针指向的便是倒数第k个结点。 注意k值大于整个链表长度的情况! 下面以k=2为例。 当pre指针到第2结点,post指针开始移动 当pre指针到到达终点时,post指针即为倒数第二个结点
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
idea debug高级特性看这篇就够了
