2020-04-23 No.24 两两交换链表中的节点

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

示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.

题解:
head = 1 2 3 4
post = 2 3 4
head.next = post.next, head = 1 3 4
post.next = head, post = 2 1 3 4
pre = -1 1 3 4, pre.next = post, pre = -1 2 1 3 4

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def swapPairs(self, head: ListNode) -> ListNode:
        if not head or not head.next:
            return head
        dummy = ListNode(-1)
        dummy.next = head
        pre = dummy
        while head and head.next:
            post = head.next
            head.next = post.next
            post.next = head
            pre.next = post

            pre = head
            head = head.next
        return dummy.next
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容