剑指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高级特性看这篇就够了