鏈表中倒數第k個結點

劍指offer第14題:
輸入一個鏈表,輸出該鏈表中倒數第k個結點。

理解:

想找到倒數第k個結點。用兩個指針先讓一個指針走(k-1)步,然後兩個指針再一起走。當先走的指針到達了末尾的時候,後走的slow指針指向的結點就是倒數第k個結點。

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode FindKthToTail(ListNode head,int k) {
        if(head == null || k <= 0){ //考慮全面特殊情況
            return null;
        }
        ListNode fast = head;
        ListNode slow = head;
        while(k-1 > 0){ //注意是k-1
            if(fast.next != null){ //要保證下一個不爲空
                fast = fast.next;
                k--;
            }else{
                return null;
            }
        }
        while(fast.next != null){ //要保證下一個不爲空
            fast = fast.next;
            slow = slow.next;
        }
        return slow;
    }
}
#####知識點:
- 指針;
- 雙指針;
- 快慢指針;
- whileif的嵌套應用











發佈了64 篇原創文章 · 獲贊 95 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章