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

2021-10-04 15:12:57 字數 646 閱讀 6566

題目: 略

思路:

由於鍊錶沒有下標操作,所以我們需要從頭開始遍歷。遍歷也有兩種方法。

解法一:找到總長度

第一次遍歷,得到總長度n

直接找到鍊錶中的第n-k+1個節點,就是倒數第k個節點。

時間複雜度為o(n)

解法二: 使用雙指標

使用第乙個指標先走k步

然後兩個指標同時走,到第乙個指標到達鍊錶末尾,第二指標所指向的節點就是需要找的答案。

時間複雜度為o(n)

牛客網ac**如下

解法一:

/*

struct listnode

};*/

class

solution

};

解法二:

/*

struct listnode

};*/

class

solution

while

(p)return plisthead;}}

;

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

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

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

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。注意 樣例 輸入 鍊錶 1 2 3 4 5 k 2 輸出 4先判斷 k 的合法性,如果 k 0,則返回null。求出鍊錶的長度。再判斷k是否大於鍊錶的長度。如果大於,則返回null,否則繼續。從頭開始遍歷 len k 個節點,則下乙個節點,也就是第 len ...

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

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