[学习报告]《LeetCode零基础指南》(第九讲) 简单递归

Leetcode-How-What 力扣Leetcode刷题指南 Leetcode-How-What 力扣Leetcode刷题指南 About the way how to use Leetcode wisely for preparing the interview and the solutions to some Leetcode problems’. 怎样为准备面试机智聪明的刷题(高效刷题)以及一些题目的题解。 同 github 链接: https:/... 阅读详情

千山万水总有路,勇敢迈出第一步!!!前路很难,路已过半,何言弃,言何弃
>> 算法的魅力,在于即使,知识你门清,题目给你一闷棍。
<< 有形的代码,被无形算法来回拉扯,翻滚吧,我的脑浆。

最后的套餐【6 绿 5 橙】,开始递归 ~ 九日集训,基本将语言基础内容完成,下一步,进军数据结构,无论是顺序还是链表,to be continued ... 
~ 热烈祝贺 老坛算粉 Leetcode 破百题 ~  🐎🐎🐎 突击 200 + 的路上 🐎🐎🐎

人生总有一场旅行,与 C++ 携手,说走就走~ 递归是一切高阶的⏲基石,需要反复的琢磨,但也要避免走火入魔。
常学,常新,常总结。👉 C++ 基础思想-迭代周边 👈

如何写出逻辑正确的递归算法

1. 关键是要明确函数的「定义」是什么,然后相信这个定义,利用这个定义推导出最终结果,绝不要跳入递归的细节;
2. 树相关的算法,先搞清楚当前 root 节点「该做什么」以及「什么时候做」,然后根据函数定义递归调用子节点。

  • 「该做什么」:实现题目效果的关键代码
  • 「什么时候做」:关键代码的位置是在前序、中序、后序的位置

一、吹逼

今日学习内容:https://bbs.youkuaiyun.com/topics/605743289
从递归开始,走向算法的不归路,待我出关,必学(血)习(洗)力扣 ~

今日最 “牛”,走完了九日集训,并大呼不过瘾。

二、晒战绩

话不多说,上图~ 👆 

三、写解题报告

题解报告,只写让我有 

 的那道题!
>> 算法的魅力,在于,即使知识你门清,题目给你一闷棍。但有时,又很简单 ~

二叉树的类声明,我得学学 ~ 👇

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */

222. 完全二叉树的节点个数:题目理解 → 节点数 = 根节点 + 左子树节点+ 右子树节点
104. 二叉树的最大深度
剑指 Offer 55 - I. 二叉树的深度:题目理解 → 深度 = 根一层 + 左子树深度+ 右子树深度

  1. 初始状态(n=0),解是 0;
  2. 任意节点(n>0)的深度 = 1 + 左子树深度+ 右子树深度;
class Solution {
public:
    int maxDepth(TreeNode* root) {
        if(root == NULL) return 0;
        return max(maxDepth(root->left), maxDepth(root->right)) + 1;
    }
};

172. 阶乘后的零:题目理解 → 求 n! 后的 0 个数 

  1. 初始状态(n=0),解是 0,推导 n < 5 时,解是 0;
  2. 任意大于 0 的自然数相乘,仅仅 2*5、10 才能产生 0,进一步推导 0 的个数等于 n! 中 5 的因子数量;
class Solution {
public:
    int trailingZeroes(int n) {
        if(n == 0) return 0;
        return trailingZeroes(n/5) + n/5;
    }
};

1342. 将数字变成 0 的操作次数:题目理解 → 通过一系列操作,将数字变成 0。返回操作次数

class Solution {
public:
    int numberOfSteps(int num) {

        if(num==0) return 0;
        if(num&1) return 1 + numberOfSteps(num-1);
        else return  + numberOfSteps(num/2);
    }
};

397. 整数替换:题目理解 →  将整数按照奇偶性进行替换,直到为 0,返回最小操作次数

class Solution {
public:
    int integerReplacement(int n) {

        if (n == 1) return 0;
        if (n&1) return 2 + min(integerReplacement(n/2), integerReplacement(n/2+1));
        return 1 + integerReplacement(n/2);
    }
};

LCP 44. 开幕式焰火:题目理解 → 统计二叉树中,非空唯一节点个数

class Solution {
public:
    // 成员变量,类似全局作用,set 集合,元素唯一性
    set<int> s;
    int numColor(TreeNode* root) {
        if(root != NULL) {
            numColor(root->left);
            s.insert(root->val);
            numColor(root->right);
        }
        return s.size();
    }
};

 226. 翻转二叉树:题目理解 → 将二叉树左右节点交换

class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
        if(root == NULL) return {};
        
        invertTree(root->left);
        invertTree(root->right);
        swap(root->left, root->right);

        return root;
    }
};

四、九天以后

虽然只过了九天,但我已经忘记怎么找到【万人千题】社区的了,这可能就是相见恨晚,一眼万年。九天以后 ~ 我们还在继续,一起呗 ~ 

《LeetCode零基础指南》(第九讲) 简单递归 递归,初级程序员的梦魇 阅读详情

相关推荐

《LeetCode零基础指南》(第十一讲) 遇到不会的题怎么办?

遇到不会的题千万不要放弃,要找方法突破

英雄哪里出来 3906

【学习报告】《LeetCode零基础指南》(第九讲) 简单递归

《九日集训》emo的第九天,还要更加努力啊!

m0_54789378的博客 622

《LeetCode零基础指南》(第十讲) 力扣常见报错集锦

常见错误集锦 和 排查手段

英雄哪里出来 2652

(学习报告)《LeetCode零基础指南》(第九讲) 简单递归

1、递归基本概念 递归的意思就是不停的调用自己,但是我们要知道的是我们的计算机资源是有限的,一般来说递归的层数不能太深(特别是自己写的程序有问题容易资源耗尽!)。递归通常来说是程序写着简洁但是人的思维量比较大同时计算机的执行效率没有直接写的代码效...

一颗正在成长的在校卷心菜 5381

《LeetCode零基础指南》导读

《LeetCode零基础指南》,她来了!

英雄哪里出来 1万+

CentOS 7下Oracle 11G RAC静默安装避坑指南:从网络规划到共享存储配置全流程

本文详细介绍了在CentOS 7环境下进行Oracle 11G RAC静默安装的全流程,包括网络规划、共享存储配置和系统参数调优等关键步骤。特别针对静默安装过程中的常见问题提供了实用的避坑指南和优化建议,帮助技术人员高效完成企业级数据库部署。

weixin_29234509的博客 125

【学习报告】《LeetCode零基础指南》(第九讲)简单递归

递归

Disco’s Blog 631

GD32F303串口DMA发送数据避坑指南:为什么你的发送函数会卡住?

本文深入解析GD32F303单片机串口DMA发送数据时常见的卡死问题,提供详细的避坑指南。从DMA传输完成中断时序、发送状态管理到双通道DMA的特别注意事项,全面剖析问题根源并给出解决方案,帮助开发者构建健壮的DMA发送机制。

weixin_27038245的博客 295

【解题报告】《LeetCode零基础指南》(第九讲) 简单递归

☘前言☘ 今天是九日集训第八天,我会记录一下学习内容和题解,争当课代表0.0. 链接:《LeetCode零基础指南》(第九讲) 简单递归 ????????作者简介:一个从工业设计改行学嵌入式的年轻人 ✨联系方式:2201891280(QQ) ⏳全文大约阅读时间: 20min 全文目录☘前言☘????主要知识点梳理????1.递归含义????2.递归调用阶乘????3. 为什么叫递归????课后习题172. 阶乘后的零1342. 将数字变成 0 的操作次数222. 完全二叉树的节点个数LCP 44. 开

XingleiGao的博客 4723

NRF52832调试方法1——HardFault_Handler问题定位

一、遇到问题 keil debug模式下,直接点击全速运行(Run)发现程序卡死,点击stop按钮后,停到了HardFault_Handler位置,如下图所示。 此时使用navigate backwards(蓝色左箭头)是无效的,找不到程序卡在哪里。 二、解决办法 此时首先观察register窗口 若Stack为MSP,则复制R13(SP)的值到memory观察窗的地址搜索栏。每一行显示连续的28个地址上的存储信息,每个地址上存有一个字节。 从第21个位置起的连续四个字节是LR的值,

小梁的博客 3650

AVM环视算法实战:从3D碗型投影到多场景模式切换的实现与优化

本文深入探讨了AVM环视算法在3D碗型投影和多场景模式切换中的实现与优化。通过分析3D碗型投影的核心原理和动态视角调节技术,展示了如何实现从超广角模式到转向模式的无缝切换。文章还分享了性能优化实战经验,包括实时性提升和图像拼接质量优化,为开发者提供了宝贵的AVM系统开发指南。

weixin_42573113的博客 171

算法如何学习?别想太多,两个字

推荐阅读

英雄哪里出来 1万+

scDeepCluster_pytorch代码解读与文章理解

论文:Clustering single-cell RNA-seq data with a。

qq_34179307的博客 915

[学习报告]《LeetCode零基础指南》(第九讲) 递归

九日集训 第九天

weixin_49427216的博客 787

基于STM32L4XX、HAL库的STS40-CD1B-R3温度传感器 驱动程序设计

/ HAL库需要左移一位。// 每2秒读取一次。// 等待测量完成 - 高精度模式大约需要15ms。// 执行软复位确保传感器处于已知状态。温度测量范围:-40°C ~ +125°C。湿度测量范围:0% ~ 100% RH。// 复位后需要等待至少1ms。// 初始化STS40传感器。// 读取温湿度数据。// 转换原始数据为实际值。// 发送读取序列号命令。// 读取序列号数据。湿度精度:±1.5% RH。

zhusl6688的博客 287

蓝牙EDR模式中GFSK调制如何过渡到DPSK调制

这两份文档片段揭示了蓝牙Modem设计中非常精深的部分。它的核心思想是:通过精心的脉冲形状设计和重叠,来保证幅度连续;通过在保护间隔内执行一套复杂的“相位平滑算法”(重复、斜率保持、寻找基准点、冻结),来保证相位连续。Figure 3-2 则是将这个思想用图形化的方式展现出来,说明了脉冲在时间轴上的对齐和叠加关系。这种设计确保了发射机能够严格符合蓝牙规范的要求,实现不同调制方式之间的平滑、无毛刺切换,从而保障了通信的可靠性和高效的频谱利用率。

m0_49540263的博客 283

[学习报告]《LeetCode零基础指南》(第9讲)简单递归

[学习报告]《LeetCode零基础指南》(第9讲)简单递归 学习内容:https://blog.youkuaiyun.com/WhereIsHeroFrom/article/details/120875679 一、今日知识点总结 函数调用自己,要有跳出条件判断 什么是简单递归,可以干嘛? 新收小白的一道坎 - 递归 含义:函数内调用函数自身(函数自己调自己) 记住主要三点 实现一个函数,这个函数会调用自己。每次调用,函数传参不一样 递归要有出口,即满足一定条件后需要return,否则可能出现 死递归==引起

写代码的仓颉 697

【XSRP软件无线电】基于软件无线电平台的QPSK频带通信系统设计(含有完整工程资料获取链接)

软件无线电(Software Defined Radio, SDR)是一种无线通信系统,它通过软件来定义和实现无线电的功能,而不是依赖于传统的硬件电路。SDR平台的核心思想是将传统无线电系统中的大部分硬件功能,如调制解调、信号处理、频率选择等,通过软件来实现。这种设计理念使得SDR具有高度的灵活性和可重配置性,能够适应不同的通信标准和频段,快速适应新的通信技术。

嵌入式技术开发 3281

【解题报告】《LeetCode零基础指南》(第二讲) 函数

☘前言☘ 今天是九日集训第一天,我会记录一下学习内容和题解,争当课代表0.0. 注意!!!!题解的解法一是今天要掌握的解法,解法2是学有余力再研究,涉及到后面知识点0.0 链接:《LeetCode零基础指南》(第二讲) 函数 ????????作者简介:一个从工业设计改行学嵌入式的年轻人 ✨联系方式:2201891280(QQ) ⏳全文大约阅读时间: 20min 全文目录☘前言☘????主要知识点梳理????力扣的简单使用????函数的定义和使用????内置函数的使用课后习题详解371. 两整数之和面试

XingleiGao的博客 3152

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

《LeetCode零基础指南》九日集训题解汇总

我汇总了我这九天发的集训题解,欢迎大家交流讨论

夜阑听雨的博客 5657

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

[学习报告]《LeetCode零基础指南》(第二讲)循环

记录参加英雄哥九日集训的内容,感受~

weixin_52621323的博客 2082

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【解题报告】《LeetCode零基础指南》(第三讲) 循环

☘前言☘ 今天是九日集训第二天,我会记录一下学习内容和题解,争当课代表0.0. 注意!!!!题解的解法一是今天要掌握的解法,解法2是学有余力再研究,涉及到后面知识点0.0 链接:《LeetCode零基础指南》(第二讲) 函数 另外:昨天讲过的知识点我今天不会再放有需要请查看: 【解题报告】《LeetCode零基础指南》(第二讲) 函数 ????????作者简介:一个从工业设计改行学嵌入式的年轻人 ✨联系方式:2201891280(QQ) ⏳全文大约阅读时间: 15min 全文目录☘前言☘????主要知

XingleiGao的博客 5558
上一篇: [学习报告]《LeetCode零基础指南》(第八讲) 二级指针
下一篇: 【C++基础语法】01 C++ 程序结构、输出输入语句、变量
老坛算粉
博客等级 码龄12年 708粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老坛算粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值