力扣刷题-链表-两两交换链表中的节点

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

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

解题思路

采用正常模拟的方法。
建议使用虚拟头结点,这样会方便很多,要不然每次针对头结点(没有前一个指针指向头结点),还要单独处理。
当涉及到交换指针比较多的时候,一定要画图(并且要考虑保存临时变量)
初始时,cur指向虚拟头结点,然后进行如下三步:
image.png
操作之后,链表如下:
image.png

class ListNode(object):
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next
        
class Solution(object):
    def swapPairs(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        dummy_node = ListNode(next=head) # 设置一个虚拟头节点 虚拟节点的下一个节点指向头节点
        cur = dummy_node
        while cur.next and cur.next.next: # 一定要记得考虑代码的健壮性 细节地方就在边界处
            temp = cur.next # 保存临时节点
            temp1 = cur.next.next.next # 保存临时节点1
            cur.next = cur.next.next
            cur.next.next = temp
            cur.next.next.next = temp1
            cur = cur.next.next # cur也要移动
        return dummy_node.next # 返回

参考:https://programmercarl.com/文章来源地址https://uudwc.com/A/201Xo

原文地址:https://blog.csdn.net/hxhabcd123/article/details/133254208

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年09月25日 13:45
ubuntu下网卡插入网线后仍然不连接
下一篇 2023年09月25日 13:45