考點:鍊錶
題目描述
輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。
思路解析
快慢指標:快慢指標初始為頭節點。快指標先走k-1步,到達第k個節點。此時慢指標相對快指標是倒數第k個節點。此時快慢指標一起走,當快指標到達最後乙個節點時,慢指標位於倒數第k個節點。
如k為3,則pa先走2步,先到第3個節點。pa、pb一起走。當pa到最後乙個節點時,pb到倒數第3個節點
c++實現
listnode* findkthtotail(listnode* plisthead, unsigned int k)
else
return null;
}while(pa->next !=null)
return pb;
}
python實現
class solution:
def findkthtotail(self, head, k):
# write code here
if(head==none or k<=0):
return none
pa=head
pb=head
for i in range(k-1):
if pa.next != none:
pa=pa.next
else:
return none
while(pa.next !=none):
pa=pa.next
pb=pb.next
return pb
方法2:python切片
class solution:
def findkthtotail(self, head, k):
# write code here
res=
while head != none: #最後乙個結點不為空,也要存起來
head=head.next
if len(res)
return none
return res[-k] #切片
劍指offer17 鍊錶中倒數第k個結點
輸入乙個鍊錶,輸出該鍊錶中的倒數第k個結點 設計快慢指標,先讓快指標往前跑k步,使快慢指標之間相差k步,然後再讓快慢指標一起往前跑,那麼當快指標跑到none的時候,慢指標所在的位置即為倒數第k個結點。注意考慮邊界條件 k比鍊錶長度小 定義兩個變數,變數之間間隔k,直到乙個變數為none即可。k比鍊錶...
劍指offer 17 鍊錶中倒數第k個結點
題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。關於鍊錶和陣列 1 建立乙個新陣列,遍歷鍊錶中的結點,將數值存入陣列中。輸出陣列中 k下標對應的值即可 class listnode def init self,x self.val x self.next none class solution de...
python劍指offer 鍊錶倒數第k個結點
題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。思想 利用兩個指標,第乙個指標f到達k之後,新建乙個指標sencond,遍歷最後乙個時sencond則為倒數第k個結點 coding utf 8 class listnode def init self,x self.val x self.next n...