Python刷 力扣 鍊錶演算法題目

2021-09-27 18:58:20 字數 1508 閱讀 7449

160.鍊錶的相交節點

我的思路是先計算出兩個列表的長度差,然後使用雙指標,長的那個先移動,然後再一起移動

class

solution

:def

getintersectionnode

(self, heada: listnode, headb: listnode)

-> listnode:

p1 = heada

p2 = headb

num1,num2,k =0,

0,0if

not(p1 or p2)

:# 判斷鍊錶是否為空鍊錶

return

none

while p1 !=

none

:# 計算鍊錶p1的長度

p1 = p1.

next

num1 +=

1while p2 !=

none

:# 計算鍊錶p2的長度

p2 = p2.

next

num2 +=

1 length =

abs(num2-num1)

# 計算兩個列表相差多長

long_length_link = headb # 找出比較長的鍊錶

short_length_link = heada

if num1>num2:

long_length_link,short_length_link = heada,headb

p1 = long_length_link

p2 = short_length_link

while k < length:

# 長的鍊錶先移動

p1 = p1.

next

k +=

1while p2.

next

!=none

and p1.

next

!=none

:# 兩個鍊錶一起移動

if p2 == p1:

return p1

p1 = p1.

next

p2 = p2.

next

return

none

class

solution

:def

getintersectionnode

(self, heada: listnode, headb: listnode)

-> listnode:

p,q = heada,headb

while q != p:

# p = p.next if heada else headb

p = p.

next

if p else headb

q = q.

next

if q else heada

return q

力扣刷題筆記2 鍊錶經典題目

1.移除鍊錶元素 解題思路 這道題很簡單,就是從頭到尾遍歷鍊錶,如果找到val值和目標值相同的節點就刪除該節點,最後返回煉表頭節點即可 具體 如下 2.翻轉鍊錶 解題思路 定義乙個頭指標head和尾指標node,while head node 迴圈結束後即完成了鍊錶的翻轉 具體 如下 題目3 鍊錶相...

python力扣206反轉鍊錶

原題鏈結 1.雙指標反轉 非迭代法的主要思想就是設定兩個指標,指標每向前移動一下就反轉一下 class solution def reverselist self,head listnode listnode pre none cur head while cur 當cur null時迴圈結束 tm...

力扣 鍊錶 (21 83 )

這篇部落格持續更新,博主力扣刷題到哪更新到哪。希望大家支援 當l1 l2任意乙個為空 非遞迴解法 class solution listnode cur head listnode pre head listnode check head.next while cur null else if cu...