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

2021-10-01 08:16:20 字數 1224 閱讀 7140

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

我們可以定義兩個指標。第乙個指標從鍊錶的頭指標開始遍歷向前走k-1,第二個指標保持不動;從第k步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k-1,當第乙個(走在前面的)指標到達鍊錶的尾結點時,第二個指標(走在後面的)指標正好是倒數第k個結點。

/*

struct listnode

};*/

class solution

listnode *pahead = plisthead;

listnode *pbehind = plisthead;

for(

unsigned

int i =

0; i1; i++

)else

}while

(pahead->next !=

null

)return pbehind;}}

;

# -*- coding:utf-8 -*-

# class listnode:

# def __init__(self, x):

# self.val = x

# self.next = none

class

solution

:def

findkthtotail

(self, head, k)

:# write code here

if head ==

none

or k ==0:

return

none

phead = head

pbehind = head

for i in

range

(k-1):

if phead.

next

==none

:return

none

else

: phead = phead.

next

while phead.

next

!=none

: phead = phead.

next

pbehind = pbehind.

next

return pbehind

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

題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。實現如下 最後乙個節點定義為倒數第乙個節點 1 2 3 4 5 p s p s eg.尋找倒數第3個節點 k 1 2 要想一次遍歷找到倒數第k個節點,關鍵在於最後乙個節點與倒數第k個節點之間相差k 1個節點 所以要保證兩個指標之間一直保持k 1個節...

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

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。兩個指標,先讓第乙個指標和第二個指標都指向頭結點,然後再讓第乙個指正走 k 1 步,到達第k個節點。然後兩個指標同時往後移動,當第乙個結點到達末尾的時候,第二個結點所在位置就是倒數第k個節點處。public class listnode public cla...

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

題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。解決思路 1.備份初始結點 2.計數結點個數 3.判斷是否超出 4.正序遍歷得到第count k個結點 public class solution if countreturn null for int i 0 i這種方法比較笨拙,相當於正序遍歷了...