借助新增加的结点

class Solution(object):
    def swapPairs(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        if not head:
            return
        if head.next==None:
            return head
        a=ListNode(0)
        p=head
        q=p.next
        head=a
        while p and q:
            a.next=q
            p.next=q.next
            q.next=p
            a=p
            p=p.next
            if p!=None:
                q=p.next
        return head.next
执行用时 :16 ms, 在所有 python 提交中击败了94.05%的用户
内存消耗 :11.7 MB, 在所有 python 提交中击败了39.45%的用户
 
人家将p和q的定义放在循环内部,就不需要考虑是不是不存在的情况。。。。
class Solution:
    def swapPairs(self, head: ListNode) -> ListNode:
        thead = ListNode(-1)
        thead.next = head
        c = thead
        while c.next and c.next.next:
            a, b=c.next, c.next.next
            c.next, a.next = b, b.next
            b.next = a
            c = c.next.next
        return thead.next

作者:wu-yan-34
链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs/solution/bi-jiao-zhi-jie-gao-xiao-de-zuo-fa-han-tu-jie-by-w/
还有递归的解法,留在下次尝试。
 
——2019.10.25
 
01-10 06:07