《算法闯关指南:递归,搜索与回溯算法--递归》--04. 两两交换链表中的结点 ,05.Pow(x,n)


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


🎬 博主简介:


文章目录


前言:

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


04. 两两交换链表中的结点

题目链接

24. 两两交换链表中的节点 - 力扣(LeetCode)

题目描述

题目示例

解法(递归):

算法思路:

  1. 递归函数的含义:交给你一个链表,将这个链表两两交换一下,然后返回交换后的头结点;
  2. 函数体:先去处理一下第二个结点往后的链表,然后再把当前的两个结点交换一下,连接上后面处理后的链表;
  3. 递归处理:当前结点为空或者当前只有一个结点的时候,不用交换,直接返回。

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

C++算法代码:

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        if(head==nullptr||head->next==nullptr)
        {
            return head;
        }
        ListNode* tmp=swapPairs(head->next->next);
        head->next->next=head;
        ListNode* ret=head->next;
        head->next=tmp;

        return ret;
    }
};

算法总结&&笔记展示:

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


05. Pow(x,n)

题目链接

50. Pow(x, n) - 力扣(LeetCode)

题目描述
题目示例

解法(递归):

算法思路:

  1. 递归函数的含义 :求出 xn次方是多少,然后返回;
  2. 函数体 :先求出 xn/2 次方是多少,然后根据 n 的奇偶,得出 xn 次方是多少;
  3. 递归处理 :当 n0 的时候,返回 1 即可。

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

C++算法代码:

cpp 复制代码
class Solution {
public:
    double myPow(double x, int n) {
        return n<0?1.0/pow(x,-(long long)n):pow(x,n);
    }

    double pow(double x,long long n)
    {
        if(n==0) return 1;
        double tmp=pow(x,n/2);  
        return  n%2==0?tmp*tmp:tmp*tmp*x;
    }
};

算法总结&&笔记展示:

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


结尾:

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

结语:本文分享了两个经典算法题的递归解法: 1️⃣ 两两交换链表节点:通过递归分解问题,先处理后续链表再交换当前节点,注意指针操作。 2️⃣ Pow(x,n)快速幂:利用递归分治思想,将问题转化为子问题(x^(n/2))合并结果,处理n为负数的情况。 代码实现简洁,附手写笔记图解关键步骤,适合巩固递归思维与链表/数学运算技巧。

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

相关推荐
仍然.几秒前
算法题目---链表
数据结构·算法·链表
luoganttcc6 分钟前
华为昇腾(Ascend)等芯片,同样存在“寄存器 / 片上存储资源限制并发”的问题
算法·华为
小O的算法实验室12 分钟前
2025年SEVC,神经-粒子群算法+大规模动态优化,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
wayz1113 分钟前
Day 7:第一周复习与模型综合比较
人工智能·算法·机器学习·量化交易
玛丽莲茼蒿14 分钟前
Leetcode hot100 买卖股票的最佳时机【简单】
算法·leetcode·职场和发展
阿Y加油吧21 分钟前
两道 LeetCode 题的复盘笔记:从「只会暴力」到「懂优化」
笔记·算法·leetcode
We་ct41 分钟前
LeetCode 300. 最长递增子序列:两种解法从入门到优化
开发语言·前端·javascript·算法·leetcode·typescript
wayz111 小时前
Day 9 :随机森林调参与时间序列交叉验证
算法·随机森林·机器学习
️是781 小时前
信息奥赛一本通—编程启蒙(3371:【例64.2】 生日相同)
开发语言·c++·算法
ZPC82101 小时前
ROS2 快过UDP的方法
python·算法·机器人