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

简介: 24. 两两交换链表中的节点

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

需要实际交换节点,而不是交换节点中的值。

1.递归 :

问题可以分解为:当前两个结点进行交换+剩余结点进行交换

可以使用递归方法。

  public ListNode swapPairs(ListNode head) {
        //终止条件
        if (head == null || head.next == null) {
            return head;
        }
        ListNode newHead = head.next; //当前头的下一个(第二个)称为新头
        head.next = swapPairs(newHead.next);
        newHead.next = head; // 当前头(第一个)称为新头.next (第二个)
        return newHead;
 
    }

//递归的另一种,可能更好理解一点

public ListNode swapPairs(ListNode head) {
        //终止条件
        if (head == null || head.next == null) {
            return head;
        }
        ListNode newHead = head.next;
        ListNode rest = newHead.next; //前两个节点之后剩下的节点
 
        newHead.next = head;
        head.next = swapPairs(rest);       
        return newHead;
    }
相关文章
|
23天前
|
存储 Python
删除链表节点详解
删除链表节点详解
|
11天前
|
存储
删除链表的节点
删除链表的节点
8 0
|
13天前
|
存储 SQL 算法
|
13天前
|
SQL 算法 数据挖掘
力扣题目 19:删除链表的倒数第N个节点 【python】
力扣题目 19:删除链表的倒数第N个节点 【python】
|
1月前
【移除链表元素】LeetCode第203题讲解
【移除链表元素】LeetCode第203题讲解
|
12天前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
13天前
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表
|
17天前
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
9 2
|
26天前
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点.
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点
23 1
|
9天前
|
算法
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表