Leetcodeは日記を書きます:24.2つの交換チェーンテーブルのノード(PYTHON)

10662 ワード

1つのチェーンテーブルが与えられ、2つのチェーンテーブルが隣接するノードを交換し、交換後のチェーンテーブルを返します.例:1->2->3->4を指定すると、2->1->4->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