鍊錶中倒數第k個節點 雙一百

2021-10-04 03:34:46 字數 1305 閱讀 2631

輸入乙個鍊錶,輸出該鍊錶中倒數第k個節點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾節點是倒數第1個節點。例如,乙個鍊錶有6個節點,從頭節點開始,它們的值依次是1、2、3、4、5、6。這個鍊錶的倒數第3個節點是值為4的節點。

第一種做法,簡單,就是先遍歷鍊錶長度,然後輸出正向的第n-k+1個。

class

solution

(object):

defgetkthfromend

(self, head, k)

:"""

:type head: listnode

:type k: int

:rtype: listnode

"""ifnot head:

return

a =0 phead = head

phead1 = head

while phead !=

none

: a +=

1 phead = phead.

next

for i in

range(1

,a-k+1)

: phead1 = phead1.

next

return phead1

第二種做法是,通過雙指標,也就是兩個指標相間隔k,如果後面的指標先到了最後,前面的指標也就到達了倒數第k個。

想法雖簡單,但是可能會弄錯位置!

結束條件是 phead1.next != none。

如果是 phead1 != none ,則後面的指標已經超過了原來的鍊錶,不是最後乙個結點。

class

solution

(object):

defgetkthfromend

(self, head, k):if

not head:

return

phead1, phead2 = head, head

a =1while a < k:

phead1 =phead1.

next

if phead1 ==

none

:return

a +=

1while phead1.

next

!=none

: phead2 = phead2.

next

phead1 = phead1.

next

return phead2

鍊錶中倒數第k個節點

題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。struct listnode方法 定義兩個指標。第乙個指標從鍊錶的頭指標開始遍歷向前走k 1,第二個指標保持不動 從第k步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k 1,當第乙個 走在前面的 指標到達鍊錶的尾結點時,第二...

鍊錶中倒數第k個節點

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。ac class solution def findkthtotail self,head,k write code here 將每個節點存在棧裡,選取stack中第k個值 stack while head head head.next if k len s...

鍊錶中倒數第k個節點

acwing打卡活動 劍指offer 打卡活動 周二第十題 鍊錶中倒數第k個節點 definition for singly linked list.public class listnode 思路 設列表總結點數為n,則n k 1 為該列表的倒數第k個節點 如 n 10,k 2,則 10 2 1 ...