美文网首页
24. 两两交换链表中的节点

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

作者: 周英杰Anita | 来源:发表于2020-06-30 18:46 被阅读0次

    给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

    你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

    示例:

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

    思路--迭代

    初始化一个哑结点,指向头结点
    初始化一个preNode,用以表示置换节点的前一个节点
    遍历链表节点:
    从head和head.next节点开始执行交换,交换过程如下图所示
    交换后,重置head 和 prev_node用以下次继续交换
    
    image.png

    python3解法--迭代

    # 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:return None
            newNode = ListNode(-1)
            newNode.next = head
            preNode = newNode
            while head and head.next:
                # 要交换的节点
                firstNode = head
                secondNode = head.next
                # 交换
                preNode.next = secondNode
                firstNode.next = secondNode.next
                secondNode.next = firstNode
                # 重置head 和 prev_node用以下次继续交换
                preNode = firstNode
                head = firstNode.next
            return newNode.next
    

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

    相关文章

      网友评论

          本文标题:24. 两两交换链表中的节点

          本文链接:https://www.haomeiwen.com/subject/ydmxqktx.html