鍊錶leetcode總結 python

2021-10-06 03:28:46 字數 1959 閱讀 3930

鍊錶是經典的遞迴定義的資料結構,鍊錶相關的題目常常考察遞迴,翻轉鍊錶是其中的經典題目。 在思考遞迴問題的時候,我們要從上到下思考:

#編寫乙個函式,使其可以刪除某個鍊錶中給定的(非末尾)節點,你將只

被給定要求被刪除的節點

node.val=node.next.val

node.next=node.next.next

給定乙個鍊錶: 1->2->3->4->5, 和 k = 2.

返回鍊錶 4->5.

1.第一時間想到的解法:

先遍歷統計鍊錶長度,記為 n ;

設定乙個指標走 (n-k)步,即可找到鍊錶倒數第 k 個節點。

使用雙指標則可以不用統計鍊錶長度。

class solution:

def getkthfromend(self, head: listnode, k: int) -> listnode:

count = 0

node = head

while node:

count += 1

node = node.next

node = head

n = count - k

while n:

node = node.next

n -= 1

return node

初始化: 前指標 former 、後指標 latter ,雙指標都指向頭節點 head​ 。

構建雙指標距離: 前指標 former 先向前走 kk 步(結束後,雙指標 former 和 latter 間相距 kk 步)。

雙指標共同移動: 迴圈中,雙指標 former 和 latter 每輪都向前走一步,直至 former 走過鍊錶 尾節點 時跳出(跳出後, latter 與尾節點距離為 k-1k−1,即 latter 指向倒數第 kk 個節點)。

返回值: 返回 latter 即可。

class solution:

def getkthfromend(self, head: listnode, k: int) -> listnode:

former, latter = head, head

for _ in range(k):

former = former.next

while former:

former, latter = former.next, latter.next

return latter

給定有序陣列: [-10,-3,0,5,9]

乙個可能的答案是:[0,-3,9,-10,null,5],它可以表示下面這個高度平衡二叉搜尋樹:

0/ \

-3 9

/ /

-10 5

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class solution:

def sortedarraytobst(self, nums: list[int]) -> treenode:

if not nums:

return none

mid = len(nums)//2

node = treenode(nums[mid])

left = nums[:mid]

right = nums[mid+1:]

node.left = self.sortedarraytobst(left)

node.right = self.sortedarraytobst(right)

return node

LeetCode 鍊錶題總結

最近花了幾天時間,將鍊錶題除帶鎖外的題目做完了,下面對鍊錶題部分題目進行總結和分析。1 鍊錶反轉 2 快慢指標 遇到一些需要找到鍊錶的中點問題時,可能會有鍊錶長度為奇數或者偶數的情況,當長度為偶數時,模板裡面 prev 為第乙個中點,slow 為第二個中點,長度為奇數時 slow 為鍊錶的中點。1....

leetcode 反轉鍊錶問題總結

第一次被問反轉鍊錶是被位元組,我沒想出來。後來在劍指offer上面看到了,我沒做出來。在leetcode和牛客上遇見,是那麼的熟悉。今天的每日一題還是思路不清晰。我意識到,我是時候寫點什麼了。希望下次遇到的時候思路清晰,一招斃命。反轉鍊錶i 反轉鍊錶ii 反轉鍊錶i是把整個鍊錶都反轉,相對來說容易一...

LeetCode鍊錶總結(待完成)

節點class listnode def init self,val 0,next none self.val val self.next next 空鍊錶 class linkedlist def init self self.head none 根據data初始化乙個新鍊錶 defcreate ...