劍指offer 面試題 22 鍊錶中倒數第K個節點

2021-09-20 06:18:33 字數 1070 閱讀 9770

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

注意:樣例

輸入:鍊錶:1->2->3->4->5 ,k=2

輸出:4

先判斷 k  的合法性,如果 k==0,則返回null。

求出鍊錶的長度。再判斷k是否大於鍊錶的長度。如果大於,則返回null,否則繼續。

從頭開始遍歷 len - k 個節點,則下乙個節點,也就是第 len-k+1 個節點就是所求節點。(len 表示鍊錶的長度) 

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

int len = 0;

len = count(plisthead);

if(k > len)

listnode* p = plisthead;

int space = len - k;

while(space > 0)

return p;

}int count(listnode* plisthead)

return len;

}};

使用 stack,先依次將鍊錶元素壓入棧,然後從棧中彈出第 k 個節點,即是所求節點。同時判斷極端情況。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

stackst;

listnode* p = plisthead;

while(p)

if(st.size() < k)

p = plisthead;

for(int i=1; i<=k; i++)

return p;

}};

《劍指offer》面試題22 鍊錶中倒數第k個節點

鍊錶節點定義如下 struct listnode 思路 定義兩個指標,第乙個指標先指向第k個節點,既向前走k 1步,然後另第二個指標指向頭結點,然後兩個指標一起向後移動,直到第乙個指標走到最後乙個節點時,此時第二個指標正好指向倒數第k個節點。注意 1.要判斷輸入是否為空指標,若為空指標,試圖訪問空指...

劍指offer 面試題22 鍊錶中倒數第k個節點

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。第一次遍歷鍊錶,計算鍊錶長度length 第二次遍歷鍊錶,讓指標向後移動length k次,就可以得到倒數第k個結點。鍊錶結點的資料結構 public class listnode public class solution listnode p head,...

劍指Offer 面試題22 鍊錶中倒數第k個結點

面試題22 鍊錶中倒數第k個結點 題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾結點是倒數第1個結點。例如乙個鍊錶有6個結點,從頭結點開始它們的值依次是1 2 3 4 5 6。這個鍊錶的倒數第3個結點是值為4的結點。方法一 遍歷鍊錶兩次,第一次統...