leetcode鏈表之找出倒數第k個節點

本文主要記錄一下leetcode鏈表之找出倒數第k個節點網絡

題目

輸入一個鏈表,輸出該鏈表中倒數第k個節點。爲了符合大多數人的習慣,本題從1開始計數,即鏈表的尾節點是倒數第1個節點。例如,一個鏈表有6個節點,從頭節點開始,它們的值依次是一、二、三、四、五、6。這個鏈表的倒數第3個節點是值爲4的節點。

 

示例:

給定一個鏈表: 1->2->3->4->5, 和 k = 2.

返回鏈表 4->5.

來源:力扣(LeetCode)
連接:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof
著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。

題解

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode getKthFromEnd(ListNode head, int k) {
        ListNode c1 = head;
        while (c1 != null && k > 0) {
            c1 = c1.next;
            k--;
        }

        ListNode c2 = head;
        while (c1 != null) {
            c1 = c1.next;
            c2 = c2.next;
        }

        return c2;
    }
}
  • 快慢指針,先讓快指針走k步,而後兩個指針同步走,當快指針走到頭時,慢指針就是鏈表倒數第k個節點。

小結

這裏採用了快慢指針的套路,先讓快指針走k步,而後兩個指針同步走,當快指針走到頭時,慢指針就是鏈表倒數第k個節點。指針

doc

相關文章
相關標籤/搜索