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

LeetCode-24-两两交换链表中的节点

作者: 阿凯被注册了 | 来源:发表于2020-10-31 08:15 被阅读0次

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


image.png

解题思路:

  1. 递归,链表长度至少大于等于2才需要交换,另tmp指向head.next即第二个节点,交换head和tmp的节点,另tmp.next指向head,head指向tmp.next,其中tmp.next为后续交换好的节点,即swapPairs(tmp.next)。
  2. 迭代,先令dump.next指向head,tmp指向dump,令node1、node2分别指向head和head.next,只需交换tmp的后两位,即交换node1和node2,然后tmp后移两位,继续上一步。

Python3代码:

# 递归
# 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: ListNode) -> ListNode:
        if not head or not head.next:
            return head 
        tmp = head.next
        head.next = self.swapPairs(tmp.next)
        tmp.next = head
        return tmp

#迭代
class Solution:
    def swapPairs(self, head: ListNode) -> ListNode:
        
        if not head or not head.next:
            return head 

        dump = ListNode(0)
        dump.next = head 
        tmp = dump 
        while tmp.next and tmp.next.next:
            node1 = tmp.next
            node2 = tmp.next.next
            tmp.next = node2
            node1.next = node2.next
            node2.next = node1
            tmp = tmp.next.next
        return dump.next 

相关文章

  • LeetCode-24 两两交换链表中的节点

    题目:24. 两两交换链表中的节点 难度:中等 分类:链表 解决方案:节点的交换 今天我们学习第24题两两交换链表...

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

    24. 两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点...

  • Leetcode 24 两两交换链表中的节点

    两两交换链表中的节点 题目 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内...

  • leetCode进阶算法题+解析(四)

    两两交换链表中的节点 题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部...

  • Swift - LeetCode - 两两交换链表中的节点

    题目 两两交换链表中的节点 问题: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 说明: 你的算法只...

  • leetcode-24-两两交换链表中的节点

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

  • LeetCode-24-两两交换链表中的节点

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

  • 【LeetCode】24.两两交换链表中的节点

    题目描述 24.两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的...

  • 链表五:链表的反转

    题目地址: 两两交换链表中的节点题目描述: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只...

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

    24.两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 示例: 给定1->2->3...

网友评论

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

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