劍指Offer學習-面試題22:鏈表中倒數第K個節點

 	/**
     * 鏈表中倒數第K個節點
     * <p>
     * 遍歷二次的方法:先遍歷一次計算鏈表的長度len,在遍歷一次找到len-k
     * 遍歷一次的方法:設置快慢兩個指針,讓快指針先走k步,然後慢指針從頭開始,同時向前走,最後快指針爲空時,慢指針就是目標節點
     *
     * @param head
     * @param k
     * @return
     */
    public ListNode findKthToTail(ListNode head, int k) {
        if (null == head || 0 == k) {
            return null;
        }
        ListNode fast = head;
        while (k > 0 && fast != null) {
            k--;
            fast = fast.next;
        }
        if (k > 0) {
            return null;
        }
        ListNode slow = head;
        while (slow != null && fast != null) {
            slow = slow.next;
            fast = fast.next;
        }
        return slow;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章