- 博客(80)
- 收藏
- 关注
原创 SPI 通信基础:从四根线到完整收发过程
本文系统讲解SPI通信协议,涵盖其基本原理、四线信号定义(SCK、MOSI、MISO、NSS/CS)、与I²C、UART对比优势,以及片选机制、全双工特性。重点解析时钟极性(CPOL)与相位(CPHA)决定的四种工作模式(Mode 0-3),并结合时序图说明数据采样与发送规则。适用于嵌入式开发中MCU与传感器、Flash、显示屏等外设的高速短距通信场景,强调协议配置一致性对通信成功的关键作用。
2026-10-03 14:46:00
202
原创 优选算法——分治(2):快速选择
本文介绍了如何利用三路快排的数组分块特性来优化查找数组第K大元素的算法。通过分析数组分块后的三个区间长度,可以判断目标元素所在区间,从而进行剪枝优化。当目标元素在中间区间时直接返回,否则递归处理相应子区间。该方法避免了完整排序,时间复杂度优于普通快排和堆排序。文章包含详细的思路图解、代码示例和复杂度分析,为高效解决类似问题提供了实用方案。
2026-03-13 16:59:24
399
1
原创 优选算法——分治(1):三路快排
本文介绍了两种快速排序算法的实现及其优化思路。文章首先展示了一个常规快速排序的代码实现,分析了其平均时间复杂度为O(NlogN),但存在最差情况下复杂度退化的问题。随后引入三路快速排序算法,通过将数组划分为小于、等于和大于基准值的三部分,有效处理重复元素较多的情况。文章通过图解详细说明了三路快排的指针移动逻辑和区间划分方法,强调其在不回退遍历特性上的优势。最后预告了下期将讲解的题目《数组中的第K个最大元素》,并附上了博主个人专栏和鼓励持续学习的寄语。
2026-03-09 11:31:36
459
3
原创 优选算法——位运算(2):消失的两个数
本文讲解如何高效解决「消失的两个数字」问题,要求在O(N)时间和O(1)空间内完成。通过异或运算的消消乐特性,首先得到缺失两数的异或结果tmp,再根据tmp的非0位将元素分类,最终分离出缺失的两个具体数字。该方法避免了排序和额外空间使用,符合题目严格限制。下期将探讨排序数组问题。
2026-03-08 13:32:09
414
2
原创 dfs专题15——组合总和
本文讲解了LeetCode组合总和问题的解题思路。通过排序数组利用单调性,采用回溯算法进行求解,重点分析了剪枝策略:当当前和超过目标值时终止搜索(剪枝1),以及通过pos参数避免重复组合(剪枝2)。文章包含决策图、代码逻辑分析和完整参考代码,强调回溯时需维护全局变量并恢复现场。最后邀请读者点赞关注,表示支持是持续分享的动力。整体内容聚焦算法解题技巧,结构清晰,要点突出。
2026-03-07 11:15:13
365
2
原创 dfs专题14——目标和
本文讲解了LeetCode题目《目标和》的解题思路,通过二叉决策树分析每个元素添加正负号的可能性。解题要点包括:所有元素必须参与表达式构建,使用深度优先搜索(DFS)遍历所有可能组合,在遍历结束时判断是否达到目标值。文章提供了代码逻辑框架,强调出口条件必须放在遍历完成后。同时预告下期将讲解《组合总和》题目,并鼓励读者互动支持。
2026-03-06 09:01:43
316
1
原创 dfs专题13——组合
本文介绍了组合问题的解题思路,通过联系子集问题的方法,提出了剪枝策略和递归解法。文章首先回顾了上期括号生成的参考代码,然后通过树状图展示组合问题的处理逻辑,强调剪枝技巧(避免重复元素和排序组合)和递归出口条件(path长度等于k)。最后预告下期将讲解目标和问题,并鼓励读者点赞关注支持。核心要点包括:组合问题本质是找指定长度子集,递归时需注意元素选择和剪枝处理,保证结果唯一性。
2026-03-04 16:48:33
250
2
原创 dfs专题12——括号生成
本文介绍了LeetCode上括号生成问题的解题思路。通过决策图分析,指出有效括号组合需满足每个右括号都有唯一对应的左括号。解题时采用回溯法,设置两个剪枝条件:左括号数不超过n,右括号数不超过左括号数。文章还预告了下期将讲解的组合问题,并附上了算法专栏和个人主页链接。最后作者鼓励读者保持学习热情,并期待与读者再次交流。
2026-02-22 21:47:17
406
8
原创 dfs专题11——电话号码的字母组合
本文讲解了LeetCode题目"电话号码的字母组合"的解题思路。要点是通过回溯算法,从每个数字对应的字母字符串中各选一个字母形成组合。文章包含决策图解析、代码思路和要点说明,并预告下期将讲解"括号生成"问题。作者提供了个人专栏链接,鼓励读者保持学习热情,并期待与读者再次交流。全文约150字,涵盖了算法解析、代码示例和互动邀请等核心内容。
2026-02-21 13:55:59
348
6
原创 dfs专题10——全排列 II
本文介绍了全排列II问题的解题思路,重点针对含重复元素的排列组合问题。作者通过决策图分析解题逻辑,强调排序预处理和剪枝策略:剪除上层使用过的元素和同一层的重复元素。文章提供了C++代码框架,并预告下期将讲解电话号码字母组合问题。作者鼓励读者保持学习热情,并邀请关注支持其专栏内容。全文以技术分享为主,穿插个人成长感悟,展现了算法学习与人生思考的结合。
2026-02-21 09:56:18
458
2
原创 dfs专题9——找出所有子集的异或总和再求和
本文讲解了如何计算数组所有子集的异或总和之和。通过回溯法生成子集,利用异或运算性质计算每个子集的异或值并累加。文章包含解题思路、代码实现要点,并预告下期将讲解全排列II问题。作者邀请读者关注点赞支持,强调独立思考完成练习的重要性,体现了算法学习中的实践与分享精神。
2026-02-20 20:26:06
417
原创 优选算法——位运算(1):判定字符是否唯一
本文介绍了判定字符串字符唯一性的两种解法:哈希表统计法和位图法。重点讲解了位图的概念及其优势,即用极小的空间高效判断整数存在性。文章列举了常用的位运算操作,并预告下期将讲解"两整数之和"问题。作者提供了个人专栏链接,包含算法、Linux、C++等主题,鼓励读者持续学习,保持求知热情。文末邀请读者点赞关注以支持创作。
2026-02-19 10:13:33
1013
3
原创 优选算法——前缀和(7):连续数组
本文介绍了求解连续数组中0和1个数相同的子数组长度的方法。首先提出暴力解法时间复杂度较高,然后给出优化思路:将0替换为-1,转化为求和为0的最长子数组问题。关键点包括使用哈希表记录前缀和下标、处理初始条件等。最后给出代码逻辑框架,强调哈希表维护和结果更新的注意事项。文章还包含作者专栏链接和鼓励学习的寄语,整体结构清晰,技术要点突出。
2026-02-18 15:52:29
649
2
原创 优选算法——前缀和(6):和可被 K 整除的子数组
本文解析了一道蓝桥杯真题《和可被K整除的子数组》。文章通过前缀和算法结合同余定理,给出了优化解法思路:利用哈希表存储前缀和余数,统计符合条件的子数组个数。关键点包括处理负数取模问题、初始化哈希表等。相比暴力解法O(N³)的时间复杂度,该方法效率更高。文中还提供了代码逻辑框架,
2026-02-15 23:54:03
716
7
原创 优选算法——前缀和(5):和为 K 的子数组
本文讲解了LeetCode题目《和为K的子数组》的解题思路。首先分析了暴力解法的时间复杂度问题,指出双指针方法因数组元素含负数而失效。随后引入前缀和算法,通过图示说明子数组和与前缀和的关系,提出核心思想:统计前缀和为sum[i]-k的个数。文章详细解释了代码逻辑,包括哈希表初始化和遍历顺序等关键细节。最后预告了下期将讲解《和可被K整除的子数组》题目,并附上了作者专栏链接和互动邀请。全文重点突出解题思路的推导过程,为读者提供了清晰的算法实现路径。
2026-02-13 17:22:36
1817
32
原创 优选算法——前缀和(4):除了自身以外数组的乘积
本文介绍了LeetCode题目"除自身以外数组的乘积"的解题思路。通过前后缀乘积分解问题,将时间复杂度优化至O(N)。文章包含知识点导图、参考代码和解题要点,并预告下期将讲解"和为K的子数组"问题。作者鼓励读者保持学习热情,强调八岁和八十岁的自己都在注视着当下的选择。文末邀请读者点赞关注,表示支持是其前进的动力。整体内容简洁明了,既讲解了算法思路,又传递了积极的学习态度。
2026-02-13 11:51:40
396
原创 dfs专题8——子集
本文介绍了两种解决子集问题的回溯算法思路。第一种方法基于元素存在性决策树,通过递归处理每个元素的存在与否两种情况;第二种方法根据子集元素个数构建决策树,利用for循环实现顺序剪枝。文章提供了C++代码示例,并展示了决策树示意图。最后预告下期将讲解子集异或总和问题,鼓励读者持续学习算法知识。两种方法都使用全局变量path和ret来存储中间结果和最终解集,体现了回溯算法的核心思想。
2026-02-12 21:26:00
968
12
原创 dfs专题7—— 全排列
本文分享了全排列问题的两种解法:暴力枚举和回溯剪枝。重点讲解了回溯法的实现思路,通过画决策树分析问题,使用全局变量path记录当前排列,ret存储结果,并用标记数组避免重复元素。文章强调画决策图对理解回溯和剪枝的重要性,并提供了清晰的代码实现框架,包括元素选择、标记、递归和回溯等关键步骤。最后指出回溯操作在全局变量场景下的必要性,为DFS问题提供了实用的解题方法。
2026-02-11 21:30:39
719
12
原创 dfs专题6——二叉树的所有路径
本文讲解了二叉树路径记录问题的两种解法:全局变量法和函数传参法。通过分析题目特点,指出自上而下的信息传递更适合使用函数参数传递。文章详细对比了两种方法的实现差异,特别强调了函数传参法无需恢复现场的优势,并提供了代码示例和解题思路图。最后预告下期将讲解全排列问题,鼓励读者尝试两种方法并期待互动交流。全文以通俗易懂的方式呈现算法解题思路,适合算法学习者参考。
2026-02-10 20:20:55
772
1
原创 优选算法——前缀和(3):寻找数组的中心下标
本文讲解了寻找数组中心下标的两种解法:暴力解法(时间复杂度O(N²))和优化解法(使用前缀和与后缀和)。重点介绍了如何利用前后缀和数组快速比较左右元素之和,并指出边界处理的注意事项。同时预告下期将讲解"除自身以外数组的乘积"问题
2026-02-09 09:29:44
931
12
原创 dfs专题5——(二叉搜索树中第 K 小的元素)
本文介绍了二叉搜索树中第K小元素的查找方法。通过中序遍历二叉搜索树,利用全局变量count和ret来记录遍历次数和目标值。当count减至0时,当前节点值即为所求。文章提供了C++代码实现,并强调了全局变量简化函数设计和逻辑模块化的优势。最后预告下期将讲解二叉树路径问题,并鼓励读者互动支持。全文结合图示和代码示例,清晰展示了算法思路和实现细节。
2026-02-06 14:17:47
530
13
原创 dfs专题4——二叉树的深搜(验证二叉搜索树)
本文讲解了如何验证二叉搜索树(BST),重点包括:1)BST的定义(空树也是BST);2)利用中序遍历有序性进行验证;3)通过全局变量prev判断遍历结果是否有序;4)介绍了剪枝和回溯的概念,剪枝可减少无效计算,回溯是递归返回上一级的操作。提供了代码逻辑框架
2026-02-06 14:17:11
769
6
原创 优选算法——前缀和(2):二维前缀和
本文介绍了二维前缀和的计算方法。首先分析题目要求,指出暴力解法时间复杂度高的问题。然后提出优化方案:通过构建前缀和数组(dp)来降低查询复杂度。重点讲解了构建dp数组的递推公式推导过程,以及如何利用dp数组快速计算任意子矩阵的和。最后给出了代码实现思路,并预告下期将讲解寻找数组中心下标的问题。文章通过图文结合的方式,清晰展示了二维前缀和的核心思想和实现方法。
2026-02-06 14:15:17
707
1
原创 优选算法——前缀和(1):一维前缀和
本文介绍了前缀和算法在解决快速求区间和问题中的应用。通过预处理构建前缀和数组dp,将多次区间查询的时间复杂度从O(n)优化到O(1)。文章对比了暴力解法(O(m*N))和前缀和解法(O(N+m))的效率差异,详细说明了前缀和数组的构建步骤和使用方法。最后预告了下期将讲解的二维前缀和题目,并附上了相关专栏链接和代码示例。前缀和算法能有效解决大规模数据的快速区间求和问题,是算法优化的重要技巧之一。
2026-02-05 11:54:36
1052
28
原创 dfs专题——二叉树的深搜3(二叉树剪枝)
本文讲解了二叉树剪枝问题的解题思路。通过后序遍历的方式,从叶子节点开始判断是否为纯0子树(值为0且左右子树为空),若是则通过返回空指针实现剪枝操作。文章强调了递归的三个关键点:重复子问题(剪枝)、子问题处理(后序遍历传递信息)和递归出口(空节点)。同时预告了下期将讲解的验证二叉搜索树问题。解题核心在于利用递归返回值向上传递子树信息,指导父节点进行指针调整,实现剪枝功能。
2026-02-05 10:18:23
822
20
原创 dfs专题——二叉树的深搜2(求根节点到叶节点数字之和)
本文介绍了如何求解二叉树从根节点到叶节点路径组成的数字之和。通过深度优先遍历,在递归过程中拼接路径数字并累加求和。关键点包括:设计递归函数参数传递父级求和数(num=prenum*10+val),处理重复子问题(左右子树的求和),以及确定递归出口(到达叶节点)。文中提供了解题思路图解和参考代码框架,并预告下期将讲解二叉树剪枝问题。文章强调递归三要素:重复子问题、处理逻辑和终止条件,帮助读者掌握树遍历问题的解决方法。
2026-02-05 10:15:29
479
2
原创 递归专题5——快速幂
摘要:本期讲解快速幂算法(Pow(x,n))的实现。通过分析3^8的计算过程,比较了暴力解法(O(N))和优化解法(O(logN))的区别。重点讲解递归思路:将问题分解为x^(n/2)的子问题,分奇偶情况处理,递归出口为n=0。同时提示要注意数据溢出问题。下期将讲解布尔二叉树值的计算。
2026-02-04 09:53:38
475
18
原创 优选算法——滑动窗口4(找子串)
本文讲解了如何高效查找字符串中所有字母异位词的问题。通过分析暴力解法的不足,提出优化思路:使用双指针滑动窗口将时间复杂度从O(N^3)降低到O(N^2)。进一步优化内部哈希表比对过程,通过维护有效数据个数count变量,避免重复遍历。文章详细演示了窗口滑动的模拟过程,并给出关键代码逻辑:先统计目标字符串p的哈希表,再通过滑动窗口维护有效数据,当窗口长度等于p长度且count匹配时即为解。最后预告下期将讲解前缀和相关的动态规划题目。
2026-02-04 09:51:18
912
23
原创 递归专题(4)——两两交换链表中的节点
摘要:本期讲解链表操作题目"两两交换链表中的节点",要点包括不改变节点值、仅调整指针指向。解题思路采用递归方法:1)将问题分解为两两交换剩余链表的重复子问题;2)出口条件是剩余不足两个节点。上期已讲解链表反转的递归实现,下期将探讨快速幂算法实现Pow(x,n)。通过递归宏观思考简化链表操作问题,避免陷入细节困扰。
2026-02-03 09:38:45
286
9
原创 递归专题(3)——反转链表
本文讲解了反转链表的两种解法:迭代法和递归法。迭代法通过循环修改节点指向实现反转;递归法则从宏观和具体两个视角分析,将问题分解为子问题处理。文章指出两种视角写出的递归代码完全相同,展现了递归思维的统一性。最后预告下期将讲解"两两交换链表中的节点"问题。
2026-02-03 09:36:35
651
6
原创 优选算法——滑动窗口3(子数组)
本文分享了算法题解系列内容,重点讲解了"最大连续1的个数III"的解法。首先介绍了暴力解法(O(N^2)),然后推荐更优的滑动窗口解法(O(N)),强调遇到连续子串问题应考虑同向双指针。解题步骤包括:进窗口、逻辑判断(0的个数是否超k)、出窗口、更新信息。文末预告下期将讲解"找到字符串中所有字母异位词"问题。
2026-02-03 09:35:48
642
2
原创 递归专题(2)——合并链表
本文分享了合并两个有序链表的算法思路。重点讲解了递归解法:通过比较链表首节点,将较小节点作为新头节点,并递归合并剩余链表与另一链表。当任一链表为空时返回另一链表作为终止条件。文章还对比了迭代法和递归法的异同,指出两者本质上都是解决重复子问题,并预告下期将讲解反转链表算法。此外,作者还分享了编程专栏和算法笔记,引用了《罪与罚》中关于突破自我的名言。
2026-02-02 09:58:07
765
5
原创 递归专题(1)——汉诺塔
本文介绍了递归算法专题,重点讲解汉诺塔问题的解题思路。通过模拟1-3层汉诺塔的移动过程,总结出三步走规律:将n-1个盘子借助辅助柱移动,移动最底层盘子,再将n-1个盘子移回目标柱。文章强调递归解题的三个关键:找到重复子问题、明确子问题操作、确定递归出口(n=1时)。最后指出递归要从宏观角度理解,不必过分纠结细节,并预告下期将讲解合并有序链表问题。
2026-02-02 09:54:41
1583
9
原创 优选算法——滑动窗口2(数组模拟哈希表)
本文分享了算法题"无重复字符的最长子串"的两种解法。暴力解法使用双重循环遍历所有子串,用哈希表统计字符出现次数,时间复杂度O(N^2)。优化解法采用滑动窗口技术,通过同向双指针维护有效子串区间,只需遍历一次数组即可得到结果,时间复杂度优化至O(N)。文章提供了完整的代码实现,并强调滑动窗口在子串问题中的高效性和通用性,建议读者通过练习掌握这一常用算法技巧。
2026-02-02 09:43:31
1269
19
原创 优选算法——双指针8(单调性)
新手同学,如果看了前几期博客的话,应该是有思路的,但是动手写就是很难写出来,很正常,但越是难,我们越是要对它进行脱敏,,练多了自然就熟练了~~
2026-01-31 09:15:39
755
28
原创 优选算法——双指针专题7(单调性)
当出现极端情况,一直跳过相同元素,可能会造成数组访问越界,比如说数组长度为4,4个元素全是0,思考一下如何解决这个问题。敲一遍,一是运用到的知识点包含了前两天的主要内容,起到复习巩固的作用,二是本题难度。,所以大家自己动手写一遍,再看下一期的参考代码,特别是新手同学,不写的。遍历所有三元组,找到满足条件的三元组,通过。同暴力解法的去重操作思路相同,遍历时。进入for循环,先固定一个数,然后。不管是暴力解还是优解,都要进行。的操作了:找两数之和等于。该解法的时间复杂度是。明天还会再见的,对吗。
2026-01-30 09:31:04
897
10
原创 优选算法——双指针6(单调性)
left之后的值都比left大,但是最小值left与此right相加都大于目标值,那么在此[left,right]区间里,剩下的值与此right相加必然大于目标值。,会超时(比较简单,就不再赘述啦,有问题的同学可以看前几期的暴力解法~)在新的区间内再次进行如上逻辑判断,直至找到和为目标值的二元组。,那么left向右遍历没有意义,因此我们让right--,相信有不少新手同学第一次做都能自己把它做出来。出所有组合,直到找到符合要求的组合。大家可以顺着这题的思路来做一做。思路与本题有千丝万缕的关系,
2026-01-29 09:25:30
574
8
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅