找到鏈表倒數(shù)第k個節(jié)點

問題:輸入鏈表頭,以及k的值,返回鏈表倒數(shù)第k個值

解題思路

新建兩個指針,指針1和指針2,都指向鏈表頭,指針2 先往前移 k-1位停在第k位,之后指針1指針2開始同步向前移,這樣指針1 指針2距離始終保持在k-1。當指針1的next是空的時候,指針2 所指的位置就是倒數(shù)第k個節(jié)點了。(記得考慮邊界情況)


public class ListNode_Test {
    public static class ListNode {
        int val;
        ListNode next;

        ListNode(int val) {
            this.val = val;
        }
    }
    public static ListNode FindKthToTail(ListNode head,int k){
        ListNode Pointer1 = head;
        ListNode Pointer2 = new ListNode(0);
        //頭不能為空,倒數(shù)第幾個,幾要大于0
        if(head == null || k <= 0){ 
            return null;
        }
        for(int i =1;i<k;i++){
            if( Pointer1.next!=null){
                Pointer1 = Pointer1.next;
            }else {
                System.out.println(i);
                return null;
            }
        }
        Pointer2 = head;
        while(Pointer1.next!=null){
            Pointer1 = Pointer1.next;
            Pointer2 = Pointer2.next;
        }
        
        return Pointer2;
    }
    public static void main(String[] args){
        //建立鏈表(1到10)
        ListNode head = new ListNode(1);
        ListNode p = head;
        System.out.println(p.val);
        for(int i=2;i<11;i++){
            p.next  = new ListNode(i);
            p = p.next;
            System.out.println(p.val);      
        }
        int k =2;
        int ans = FindKthToTail(head,k).val;
        System.out.println("The kth inverse :" + ans ); 
        
    }
    

}


最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容