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

作者: 半亩房顶 | 来源:发表于2019-04-20 00:24 被阅读1次

题目

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

思路

思路还是挺简单的

  • 最直接的思路就是一种方法,两步为步进,循环条件为有两个以上剩余节点
  • 主要说一下递归方法,递归法首先考虑三点:终止条件,返回值,单次操作
    具体实现可能有多种,这里只是其中一种:
    (1)终止条件:只剩下一个节点或者没有后续节点
    (2)返回值:子链头指针
    (3)单次操作:交换节点,next指向下一层递归的返回值,即指向子链

代码

递归法:

# 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
        pHead=head
        pHeadNext=head.next
        pHead.next=self.swapPairs(pHeadNext.next)
        pHeadNext.next=pHead
        return pHeadNext

非递归法:

# 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:
        new_h = ListNode(-1)
        new_h.next = head
        p1 = new_h
        p2 = p1.next
        
        while p2!=None and p2.next!=None:
            p1.next = p2.next
            p2.next = p1.next.next
            p1.next.next = p2
            
            p1 = p2
            p2 = p2.next
        
        return new_h.next

以上

欢迎大家关注我的公众号


半亩房顶

相关文章

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

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

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

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

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

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

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

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

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

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

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

    题目 swap-nodes-in-pairs给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单...

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

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

  • 链表五:链表的反转

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

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

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

  • 每周 ARTS 第 21 期

    1. Algorithm 24. 两两交换链表中的节点(中等) 描述: 给定一个链表,两两交换其中相邻的节点,并返...

网友评论

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

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