Loading

Leetcode - 24. 两两交换链表中的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例 1:

输入:head = [1,2,3,4]
输出:[2,1,4,3]

示例 2:

输入:head = []
输出:[]

示例 3:

输入:head = [1]
输出:[1]

提示:

  • 链表中节点的数目在范围 [0, 100] 内
  • 0 <= Node.val <= 100

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解1 2021/8/29 O(n)

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next
    def __repr__(self):
        return '{}'.format(self.val) + (('->' + self.next.__repr__()) if self.next else '')

def swapPairs(head: ListNode) -> ListNode:
    # 不能只是交换值,说是这么说,但你咋知道我是不是交换值
    # 交换值,看看它怎么判
    if head is None or head.next is None: return head
    l=[]
    while head:
        l.append(head.val)
        head=head.next
    len=l.__len__()
    x=0;y=1
    while y<len:
        l[x]=l[x]+l[y]
        l[y]=l[x]-l[y]
        l[x]=l[x]-l[y]
        x+=2;y+=2
    dummy=ListNode(-1)
    tmp=dummy
    for x in l:
        tmp.next=ListNode(x)
        tmp=tmp.next
    return dummy.next

if __name__ == '__main__':
    head=ListNode(1,ListNode(2,ListNode(3,ListNode(4))))
    print(swapPairs(head))
    head=ListNode(1,ListNode(2,ListNode(3,ListNode(4,ListNode(9)))))
    print(swapPairs(head))
    head=None
    print(swapPairs(head))
    head=ListNode(1)
    print(swapPairs(head))

posted @ 2021-08-29 20:58  wwcg2235  阅读(30)  评论(0)    收藏  举报