LeetCode官方ListNode類仿寫

2021-10-07 05:29:56 字數 2746 閱讀 3682

class

listnode

:"""

leetcode官方listnode類仿寫(模擬官方功能)

主要用於本地ide除錯

參考:"""

def__init__

(self, val)

:"""

構造器:param val: 構造物件

"""self._cycle =

false

ifisinstance

(val,

list):

iflen

(val)==1

: self.val = val[0]

self.

next

=none

else

: self.val = val[0]

self.

next

= listnode(val[1:

])elif

isinstance

(val,

int)

orisinstance

(val,

str)

: self.val = val

self.

next

=none

defset_cycle

(self, pos)

:"""

設定迴圈

:param pos:

:return:

"""if pos >=0:

self._cycle =

true

node = self

num =

0 pos_node =

none

last_node =

none

while node:

if num == pos:

pos_node = node

last_node = node

node = node.

next

num +=

1 last_node.

next

= pos_node

return self

defset_next

(self, next_node)

:"""

設定最後乙個結點的指標

:param node:

:return:

"""node = self

last_node =

none

while node:

last_node = node

node = node.

next

last_node.

next

= next_node

defgatherattrs

(self)

:return

", "

.join(

"{}: {}"

.format

(k,getattr

(self, k)

)for k in self.__dict__.keys())

def__str__

(self)

:if self._cycle:

return

"error - found cycle in the listnode"

else

:return self.__class__.__name__ +"".

format

(self.gatherattrs())

+"}"

defbuild_listnode_with_pos

(val, pos=-1

):""" 構造迴圈鍊錶

:param val: 鍊錶

:param pos: 鍊錶最後乙個結點指標對應的節點編號

:return:

"""return listnode(val)

.set_cycle(pos)

defbuild_listnode_with_skip

(val, list1, list2, skip1, skip2)

:"""

構造相交鍊錶

:param val: 相較交點

:param list1: 鍊錶1

:param list2: 鍊錶2

:param skip1: 鍊錶1交點位置

:param skip2: 鍊錶2交點位置

:return:

"""list_node_1 = listnode(list1[

0:skip1]

) list_node_2 = listnode(list2[

0:skip2]

)if skip1 ==

len(list1)

:return list_node_1, list_node_2

if skip2 ==

len(list2)

:return list_node_1, list_node_2

list_merge = listnode(list1[skip1:])

list_node_1.set_next(list_merge)

list_node_2.set_next(list_merge)

return list_node_1, list_node_2

部分結構參考:

LeetCode 126單詞接龍II 官方解法

給定兩個單詞 beginword 和 endword 和乙個字典 wordlist,找出所有從 beginword 到 endword 的最短轉換序列。轉換需遵循如下規則 每次轉換只能改變乙個字母。轉換過程中的中間單詞必須是字典中的單詞。說明 如果不存在這樣的轉換序列,返回乙個空列表。所有單詞具有相...

mysql 官方映象 執行官方mysql 映象

目前最新的為mysql 8 sudo docker run itd restart unless stopped net host name mysql p3306 3306 e mysql root password root mysql mysql 官方docker 需要重新設定密碼,否則無法遠...

python官方 Python官方中文文件強勢來襲

python 官方支援的文件一直沒有中文。小夥伴們已經習慣了原汁原味的英文文件,但如果有官方中文文件,對於初學者來說,門檻會大大的降低。現在中文文件強勢來襲 以前也是有一些第三方維護的 python 中文文件,不過可能因為人力等限制,並做不到同步更新與維護。目前也有很多高質量的 python 中文資...