《C++ 递归、搜索与回溯》第2-3题:合并两个有序链表,反转链表

🔥个人主页:Cx330🌸

❄️个人专栏:《C语言》《LeetCode刷题集》《数据结构-初阶》《C++知识分享》

《优选算法指南-必刷经典100题》《Linux操作系统》:从入门到入魔

《Git深度解析》:版本管理实战全解

🌟心向往之行必能至


🎥Cx330🌸的简介:


目录

前言:

[2. 合并两个有序链表](#2. 合并两个有序链表)

算法原理(递归):

思路:

解法代码(C++):

博主手记(字体还请见谅哈):

[3. 反转链表](#3. 反转链表)

算法原理(递归):

思路:

解法代码(C++):

博主手记(字体还请见谅哈):

结尾:


前言:

聚焦算法题实战,系统讲解三大核心板块:"精准定位最优解 "------优选算法,"简化逻辑表达,系统性探索与剪枝优化 "------递归与回溯,"以局部最优换全局高效 "------贪心算法,讲解思路与代码实现,帮助大家快速提升代码能力


2. 合并两个有序链表

题目链接:

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

题目描述:

题目示例:

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

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

解法代码(C++):
cpp 复制代码
class Solution 
{
public:
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) 
    {
        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(list2->next,list1);
            return list2;
        }         
    }
};
博主手记(字体还请见谅哈):

总结:


3. 反转链表

题目链接:

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;   
    }
};
博主手记(字体还请见谅哈):

结尾:

总结:1、合并两个有序链表:通过递归比较节点值,将较小节点作为头结点,剩余部分继续递归处理;2、反转链表:递归到末尾节点后回溯,逐节点调整指针方向,两种解法均强调画图分析指针操作的重要性,并提供了完整的C++代码实现。专注于通过系统讲解优选算法、递归回溯和贪心算法等核心板块,帮助读者提升代码能力

相关推荐
奔跑的蜗牛ing9 小时前
CentOS Nginx 安装与静态文件服务器配置指南
前端·面试·架构
还有多久拿退休金9 小时前
让飞书知识库跟着 commit 自己长:一套自动化知识库的真实实现
前端·算法·架构
wuqingshun3141599 小时前
重写equals而不重写hashCode,会出什么问题?
java·开发语言
飞猪~9 小时前
LangChain python 版本 第一集
开发语言·python·langchain
KaMeidebaby10 小时前
卡梅德生物技术快报|小 RNA 适配体合成 + 多方法亲和力表征全流程标准化操作手册
前端·网络·数据库·人工智能·算法
是Dream呀10 小时前
基于深度学习的人类行为识别算法研究
人工智能·深度学习·算法
李燚11 小时前
Go 项目怎么组织:DDD 4 层 vs MVC vs 脚本式
开发语言·golang·mvc·ddd·agent框架·eino
happyprince11 小时前
03_NVIDIA_ModelOpt-量化算法深入
人工智能·深度学习·算法
大鱼>11 小时前
AI+货物追踪:智能快递柜追踪系统
人工智能·深度学习·算法·机器学习
2zcode11 小时前
免费开源项目文档:基于MATLAB图像处理的啤酒瓶口缺陷检测系统设计与实现
开发语言·图像处理·matlab