鏈表中倒數第 K 個結點

輸入一個鏈表,輸出該鏈表中倒數第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;
            
    }
}
相關文章
相關標籤/搜索