Leetcodeは日記を書きます:24.2つの交換チェーンテーブルのノード(PYTHON)
10662 ワード
1つのチェーンテーブルが与えられ、2つのチェーンテーブルが隣接するノードを交換し、交換後のチェーンテーブルを返します.例:1->2->3->4を指定すると、2->1->4->3を返す必要があります.説明:あなたのアルゴリズムは定数の余分な空間しか使用できません.単純にノード内部の値を変えるのではなく、実際にノード交換を行う必要があります.
3番目のコード:
L=ListNode(0)
L.next=head
s1=L
SS=ListNode(0)
ss=SS # , ,
a1=s1.next
if a1==None:
return []
a2=s1.next.next
while a1!=None or a2!=None:
if a1==None:
break # a2 None,
if a2==None:
bb1=ListNode(a1.val) #
ss.next=bb1 # ss.next
break
bb1=ListNode(a2.val)
ss.next=bb1
ss=ss.next # , bb1
bb1=ListNode(a1.val)
ss.next=bb1 # next bb1
ss=ss.next # bb1
s1=s1.next.next #
a1=s1.next
if a1==None: # ,
break
a2=s1.next.next
return SS.next # .next
28ms, 48%
.next
, , a1=s1.next,a1 , None , , a1.val, , , ListNode(a1.val)
a1=s1.next
a2=s1.next.next
while a1!=None or a2!=None:
if a1==None:
break
if a2==None:
ss.next=a1
break
ss.next=a2
ss=ss.next
ss.next=a1
ss=ss.next
s1=s1.next.next
a1=s1.next
a2=s1.next.next
return SS.next
3番目のコード:
# 3 ,next= ead
s=ListNode(-1)
s.next=head
s1=s
s2=s
# s1 , , s1.next , s1.next.next
while s1.next and s1.next.next:
a=s1.next#
b=s1.next.next#
a.next=b.next# next,
b.next=a#
s2.next=b# s2
s1=s2.next.next#
s2=s2.next.next#
return s.next