輸入一個鏈表,輸出該鏈表中倒數第k個結點。java
設鏈表的長度爲 N。設兩個指針 P1 和 P2,先讓 P1 移動 K 個節點,則還有 N - K 個節點能夠移動。此時讓 P1 和 P2 同時移動,能夠知道當 P1 移動到鏈表結尾時,P2 移動到 N - K 個節點處,該位置就是倒數第 K 個節點。this
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode FindKthToTail(ListNode head,int k) { ListNode pre=null,p=null; //兩個指針都指向頭結點 p=head; pre=head; //記錄k值 int a=k; //記錄節點的個數 int count=0; //p指針先跑,而且記錄節點數,當p指針跑了k-1個節點後,pre指針開始跑, //當p指針跑到最後時,pre所指指針就是倒數第k個節點 while(p!=null){ p=p.next; count++; if(k<1){ pre=pre.next; } k--; } //若是節點個數小於所求的倒數第k個節點,則返回空 if(count<a) return null; return pre; } }