《算法闯关指南:递归,搜索与回溯算法--递归》--02. 合并两个有序链表,03. 反转链表


🔥草莓熊Lotso: 个人主页
❄️个人专栏: 《C++知识分享》 《Linux 入门到实践:零基础也能懂》
✨生活是默默的坚持,毅力是永久的享受!


🎬 博主简介:


文章目录


前言:

聚焦算法题实战,系统讲解三大核心板块:优选算法:剖析动态规划、二分法等高效策略,学会寻找"最优解"。 递归与回溯:掌握问题分解与状态回退,攻克组合、排列等难题。 贪心算法:理解"局部最优"到"全局最优"的思路,解决区间调度等问题 内容以题带点,讲解思路与代码实现,帮助大家快速提升代码能力。


02. 合并两个有序链表

题目链接

21. 合并两个有序链表 - 力扣(LeetCode)

题目描述

题目示例

解法(递归):

算法思路:

  1. 递归函数的含义:交给你两个链表的头结点,你帮我把它们合并起来,并且返回合并后的头结点;
  2. 函数体:选择两个头结点中较小的结点作为最终合并后的头结点,然后将剩下的链表交给递归函数去处理;
  3. 递归处理:当某一个链表为空的时候,返回另外一个链表。

注意: 链表的题一定要画图,搞清楚指针的操作!

C++算法代码:

cpp 复制代码
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
        if(list1==nullptr&&list2==nullptr)
            return nullptr;
        if(list1==nullptr) return list2;
        if(list2==nullptr) return list1;
        
        if(list1->val<list2->val)
        {
            list1->next=mergeTwoLists(list1->next,list2);
            return list1;
        }
        else
        {
            list2->next=mergeTwoLists(list1,list2->next);
            return list2;
        }
    }
};

算法总结&&笔记展示:

笔记字有点丑,大家见谅:


小总结


03. 反转链表

题目链接

206. 反转链表 - 力扣(LeetCode)

题目描述

题目示例

解法(递归):

算法思路:

  1. 递归函数的含义:交给你一个链表的头指针,你帮我逆序之后,返回逆序后的头结点;
  2. 函数体:先把当前结点之后的链表逆序,逆序完之后,把当前结点添加到逆序后的链表后即可;
  3. 递归处理:当前结点为空或者当前只有一个结点的时候,不用逆序,直接返回。

注意: 链表的题一定要画图,搞清楚指针的操作!

C++算法代码:

cpp 复制代码
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(head==nullptr||head->next==nullptr)
        {
            return head;
        }
        ListNode*newhead=reverseList(head->next);
        head->next->next=head;
        head->next=nullptr;
        return newhead;
    }
};

算法总结&&笔记展示:

笔记字有点丑,大家见谅:


结尾:

html 复制代码
🍓 我是草莓熊 Lotso!若这篇技术干货帮你打通了学习中的卡点:
👀 【关注】跟我一起深耕技术领域,从基础到进阶,见证每一次成长
❤️ 【点赞】让优质内容被更多人看见,让知识传递更有力量
⭐ 【收藏】把核心知识点、实战技巧存好,需要时直接查、随时用
💬 【评论】分享你的经验或疑问(比如曾踩过的技术坑?),一起交流避坑
🗳️ 【投票】用你的选择助力社区内容方向,告诉大家哪个技术点最该重点拆解
技术之路难免有困惑,但同行的人会让前进更有方向~愿我们都能在自己专注的领域里,一步步靠近心中的技术目标!

结语:本文通过两道经典链表题目(合并有序链表、反转链表)讲解递归算法的核心思路与实现。合并链表:递归比较头节点,将较小节点链接至剩余链表合并结果;反转链表:递归到末尾,逐节点修改指针方向。代码简洁高效,附详细图解和手写笔记,帮助理解指针操作与递归过程。适合算法初学者巩固链表与递归知识,提升问题分解与回溯能力。

✨把这些内容吃透超牛的!放松下吧✨ ʕ˘ᴥ˘ʔ づきらど

相关推荐
youngee112 小时前
hot100-54在排序数组中查找元素的第一个和最后一个位置
数据结构·算法·leetcode
QQ帝国2 小时前
Vue3 + Vite 项目使用 GitBash 自动化部署GitHub
运维·自动化
XFF不秃头2 小时前
力扣刷题笔记-和为 K 的子数组
c++·笔记·算法·leetcode
MicroTech20252 小时前
区块链赋能,联邦协同:微算法科技(NASDAQ: MLGO)打造物联网安全分布式检测新架构
科技·算法·区块链
漫漫求2 小时前
ubuntu设置软件开机自启动
linux·运维·ubuntu
1001101_QIA2 小时前
vector学习笔记
数据结构·算法
安科瑞刘鸿鹏172 小时前
实时监测、主动预警:企业配电系统在线测温技术的场景化应用解读
运维·网络·人工智能·物联网
Scholar With Saber2 小时前
kali Linux安装教程,ISO镜像安装(物理机,虚拟机皆可)kali安装2025最新,0基础可用,保姆级图文
linux·运维·网络安全
(❁´◡`❁)Jimmy(❁´◡`❁)2 小时前
【数据结构】 Treap1: 插入,删除,查找,旋转
数据结构·算法