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 中文資...