劍指offer刷題(十三)鍊錶中倒數第k個結點

2021-10-04 10:44:29 字數 630 閱讀 5495

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

用兩個指標,指標p、q最開始都指向 head,p 先向右移動 k 位,然後 p 和 q 再一起同步向右移動,當 p 到達邊界時(p指向空), q 正好指向了倒數第 k 個結點

做完這些還不能通過牛客網的測試,因為出現了 k 會大於整個鍊錶長度的情況,因此在 p 向右邊移動的時候做出判斷,如果在移動到 k 位之前 p 就已經到達邊界了,那麼直接返回空即可

class

solution

:def

findkthtotail

(self, head, k)

:# write code here

p = head

q = head

i =0while i < k:

#如果在移動到 k 位之前 p 就已經到達邊界了,那麼直接返回空即可

if p is

none

:return

none

p = p.

next

i +=

1while p:

p = p.

next

q = q.

next

return q

劍指Offer刷題 鍊錶

劍指 offer 18.刪除鍊錶的節點 難度簡單 給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。返回刪除後的鍊錶的頭節點。注意 此題對比原題有改動 示例 1 輸入 head 4,5,1,9 val 5 輸出 4,1,9 解釋 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的...

劍指offer刷題日記 鍊錶

鍊錶03 從尾到頭列印鍊錶 python 採用insert方法 class solution def printlist self,listnode if not listnode return result while listnode result.insert 0 listnode.val l...

《劍指offer》刷題(1)鍊錶

最近二刷 劍指offer 的題目,寫寫其中關於鍊錶的解題思路 劍指offer18題 需要兩個指標,pre儲存刪除節點的前驅指標,cur儲存要刪除節點的指標 public listnode deletenode listnode head,int val if cur null return dumm...