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

力扣24题

题目描述:

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

**题解思路:**递归,确定递归三部曲的条件:

  1. 确定递归函数的参数和返回值:回交换后子链表的头节点;
  2. 确定递归的终止条件:temp是null或head是null
  3. 确定单层递归的逻辑:temp是head的下一个节点,head后接交换完成的子链表,temp接head;
java 复制代码
class Solution {
    public ListNode swapPairs(ListNode head) {
        if(head==null || head.next==null){
            return head;
        }
        ListNode temp=head.next;
        // 执行递归逻辑
        head.next=swapPairs(temp.next);
        temp.next=head;
        return temp;
    }
}
相关推荐
朝朝又沐沐2 小时前
算法竞赛阶段二-数据结构(36)数据结构双向链表模拟实现
开发语言·数据结构·c++·算法·链表
薰衣草23333 小时前
一天两道力扣(6)
算法·leetcode
逝雪Yuki3 小时前
Leetcode——287. 寻找重复数
c++·leetcode·二分查找·双指针·环形链表
剪一朵云爱着3 小时前
力扣946. 验证栈序列
算法·
遇见尚硅谷3 小时前
C语言:*p++与p++有何区别
c语言·开发语言·笔记·学习·算法
天天开心(∩_∩)3 小时前
代码随想录算法训练营第三十二天
算法
YouQian7724 小时前
(AC)缓存系统
算法·缓存
艾莉丝努力练剑4 小时前
【数据结构与算法】数据结构初阶:详解排序(二)——交换排序中的快速排序
c语言·开发语言·数据结构·学习·算法·链表·排序算法
科大饭桶4 小时前
数据结构自学Day13 -- 快速排序--“前后指针法”
数据结构·算法·leetcode·排序算法·c
李永奉4 小时前
C语言-流程控制语句:for循环语句、while和do…while循环语句;
c语言·开发语言·c++·算法