剑指offer第十四题。
题目描述
输入一个链表,输出该链表中倒数第k个结点。
解题思路
做过这个题目或者了解过,思路一下就有了。要求倒数第k个结点,而这个单向链表只能next,所以往前找是不行的。怎么办呢?我们可以先派一个指针走k个结点,然后另一个指针从头开始,两个指针同时后移,当前面个指针到最后一个结点的下一个结点即null的时候,后面个指针恰好指向的就是倒数第k个结点。
我的答案
答案稍微有点繁琐了,但是我觉得思路清晰是最重要的,代码再精简是需要在思路清晰的基础上再加以磨练才行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
public class Solution { public ListNode FindKthToTail(ListNode head,int k) { if(head == null){ return null; } int count = 0; ListNode tmp = head; while(tmp != null){ count++; tmp = tmp.next; } if(k > count){ return null; } ListNode node = head; while(k > 0){ node = node.next; k--; } while(node != null){ head = head.next; node = node.next; } return head; } }
|