swap nodes in pairs

25 年 6 月 29 日 星期日
234 字
2 分钟

problem

My Solution:

python
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:
        dummy = ListNode(next=head)
        pre = dummy
        if head and head.next:
            s1, s2 = dummy.next, dummy.next.next
            while s2:
                tmp = s2.next
                pre.next = s2
                s2.next = s1
                s1.next = tmp
                if tmp and tmp.next:
                    pre = s1
                    s1 = tmp
                    s2 = tmp.next

                else:
                    break
            return dummy.next
        return head

It works, but the logics can be modified:

python
class Solution:
    def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:
        node0 = dummy = ListNode(next=head)  # 用哨兵节点简化代码逻辑
        node1 = head
        while node1 and node1.next:  # 至少有两个节点
            node2 = node1.next
            node3 = node2.next

            node0.next = node2  # 0 -> 2
            node2.next = node1  # 2 -> 1
            node1.next = node3  # 1 -> 3

            node0 = node1  # 下一轮交换,0 是 1
            node1 = node3  # 下一轮交换,1 是 3
        return dummy.next  # 返回新链表的头节点

作者:灵茶山艾府
链接:https://leetcode.cn/problems/swap-nodes-in-pairs/solutions/2374872/tu-jie-die-dai-di-gui-yi-zhang-tu-miao-d-51ap/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

文章标题:swap nodes in pairs

文章作者:Sirui Chen

文章链接:https://blog.siruichen.me/posts/24swap_nodes_in_pairs[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。