輸入乙個鍊錶,輸出該鍊錶中倒數第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...