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

2021-09-09 05:41:36 字數 691 閱讀 8886

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

雙指標,p1先走k步,然後同時走,p1到頭時候返回p2

倒數第k個就是正數第n-k+1個,從第乙個結點到第n-k+1個結點一共要走n-k步,從第k+1個結點到n+1個結點也是n-k步,從第乙個結點到第k+1個結點,走k步

# -*- 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 not head:

return none

p1 = head

p2 = head

l = k

while l > 0:

try:

p1 = p1.next

l -= 1

except:

return none

while p1:

p1 = p1.next

p2 = p2.next

return p2

占用記憶體:5848k

劍指offer第14題 反轉鍊錶

定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 限制 0 節點個數 5000 思路 新鍵乙個虛擬前驅節點,每次讓當前節點指向我們的上乙個前驅節點。就可以實現反向整個鍊錶了。其實並不難,鍊錶題自己多畫...

劍指Offer 程式設計題14 鍊錶中倒數第k個結點

題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。牛客網 鏈結 leetcode變體 leetcode19 remove nth node from end of list 結點是既有value值,又有指標。我們可以定義兩個指標。第乙個指標從鍊錶的頭指標開始遍歷向前走k 1,第二個指標保持不動 從第k...

劍指Offer 第24題 反轉鍊錶

第24題 反轉鍊錶 題目 輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。我的思路 建立鍊錶一般可分為頭插法和尾插法兩種方式,那麼這裡可以通過遍歷原鍊錶採用頭插法來建立新鍊錶。自己的low public class solution return head.next 優雅 public class so...