0
質問:Swap Two Nodes in Linked ListSwaping値が間違った答えにつながる
回答1:
def swapNodes(self, head, v1, v2):
dummyHead = ListNode(-1, head)
pre_v1 = None
pre_v2 = None
curNode = dummyHead
while curNode.next:
if curNode.next.val == v1:
pre_v1 = curNode
elif curNode.next.val == v2:
pre_v2 = curNode
if pre_v1 and pre_v2:
pre_v1.next, pre_v2.next, pre_v1.next.next, pre_v2.next.next = \
pre_v2.next, pre_v1.next, pre_v2.next.next, pre_v1.next.next
break
curNode = curNode.next
return dummyHead.next
入力された間違った答えに、この解答リードの1-> 2 - > 3 - > 4 - > null。出力は1-> 4-> 3-> 2-> nullでなければなりません。私は
pre_v1.next, pre_v2.next = pre_v2.next, pre_v1.next
pre_v1.next.next, pre_v2.next.next = pre_v2.next.next, pre_v1.next.next
に
pre_v1.next, pre_v2.next, pre_v1.next.next, pre_v2.next.next = \
pre_v2.next, pre_v1.next, pre_v2.next.next, pre_v1.next.next
を変更した場合でも、1 - > 4 - >ヌル
を返す答えは正しいです。
私は何か不足していますか?このように値を入れ替える際には注意が必要な「トラップ」がありますか?
[Pythonでの複数の割り当てと評価の順序]の可能な複製(0120-18753)/マルチプルアサイメント - と - 評価 - オーダー - イン - パイソン –
Moinuddinが述べたように、別の順序で評価します:順序は重要です: 'pre_v1.next'と' pre_v1.next.next'を入れ替える順序は結果に影響します – TemporalWolf