《劍指Offer》鍊錶中倒數第k個結點

2021-09-26 01:39:38 字數 643 閱讀 2729

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。

思想:

如  ,k=2,即輸出倒數第二個元素5

在cnt小於k時只有p移動,並且最後移動到了元素值值為2,q還是指向頭結點(元素值為1),這時p,q兩指標的偏移量為1

之後p,q都在一起移動,p,q兩指標的偏移量始終為1,當p指向最後乙個元素時,q指向倒數第二個元素

編碼思路:

定義兩個指標p,q指向頭結點,cnt作為計數工具初始化為0;

進入迴圈,迴圈執行條件為p指標不為空

如果計數的cnt小於k 則p指向其下乙個元素

如果計數的cnt大於等於k,q指向其下乙個元素,p指向其下乙個元素

cnt++;

如果cnt大於等於k,就返回指標q,否則就是k比鍊錶元素的總數還大,返回null

/*

struct listnode

};*/

class solution

p=p->next;

cnt++;

}return (cnt>=k)?q:null;

}};

《劍指offer》 鍊錶中倒數第k個結點

題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點.這種考題是比較簡單的一種,以前也碰到過類似的題目,從耗時來說,一般都是使用兩個指標,一前一後的走,中間間隔k或者k 1個步長,這個視判斷語句而定。當前乙個指標走到末端時,後乙個指標正好落在倒數第k個節點處,直接返回該節點。code public c...

劍指offer 鍊錶中倒數第K個結點

輸入乙個鍊錶,輸出該鍊錶中倒數第k 個結點。從 1開始計數,即該鍊錶的尾節點是倒數第乙個結點。思路 一 鍊錶是單向鍊錶,只能從頭結點往後依次遍歷,倒數第k 個結點,也就是從頭結點開始的 n k 1 個結點。但是需要先遍歷一遍得到鍊錶長度,然後在找第 n k 1的k 結點。二 1 方法一需要對鍊錶進行...

劍指Offer 鍊錶中倒數第k個結點

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。分析 兩個指標,先讓第乙個指標和第二個指標都指向頭結點,然後再讓第一指標走 k 1 步,即到達第k個結點。然後兩個指標同時開始向後移動,當第乙個指標到達最後的結點時候,第二個結點所在位置就是倒數第k個結點了。author zy date 2017年10月3日...