- 博客(25)
- 收藏
- 关注
原创 代码随想录算法训练营第39天 | 动态规划part08
本文总结了动态规划在股票买卖问题中的应用。通过121、122、123三道题目,展示了贪心算法和动态规划两种解法。动态规划通过定义不同状态(持有/不持有股票)来推导最优解,其中123题还引入了多次交易的状态转移。作者强调通过反复抄写代码加深理解,最终达到独立编写的能力。这些题目展示了动态规划在解决最优化问题中的强大能力。
2026-02-27 17:04:29
59
原创 代码随想录算法训练营第38天 | 动态规划part07
本文总结了动态规划中"打家劫舍"系列问题的解法。198题通过定义dp[i]为考虑前i个房屋的最大金额,区分偷与不偷当前房屋两种情况取最大值。213题将环形房屋拆分为两种线性情况处理。337题采用树形DP,后序遍历处理二叉树结构。核心思想是状态转移方程的应用,通过分析相邻元素的关系确定最优解。作者强调即使暂时不理解,动手实践抄写代码也能带来收获,体现了算法学习中实践的重要性。
2026-02-26 17:27:58
68
原创 代码随想录算法训练营第37天 | 动态规划part06
本文总结了动态规划背包问题的关键知识点。322题零钱兑换讲解了组合与排列的区别,使用dp[j]表示凑足金额j所需最少硬币数,递推公式为dp[j] = min(dp[j-coins[i]]+1, dp[j])。279题完全平方数用类似思路求解。139题单词拆分通过dp[i]表示前i个字符能否拆分成字典单词。文章强调学习过程中保持耐心和专注的重要性,建议通过反复练习掌握这些动态规划问题的解法。核心要点包括:初始化处理、递推公式推导、内外层循环顺序对结果的影响等。
2026-02-25 19:03:42
343
原创 代码随想录算法训练营第36天 | 动态规划 part05
本文总结了动态规划完全背包问题的学习要点。重点介绍了完全背包与01背包的区别,其中完全背包每个物品可取无限次。通过518.零钱兑换II问题,说明了组合与排列的区别,并给出了二维dp数组的定义方法。文中强调实践的重要性,建议通过打印dp数组变化来加深理解,提倡循序渐进的学习方式。还提到377.组合总和IV和70.爬楼梯(进阶)等例题,指出代码和思路需要反复推敲才能掌握核心。
2026-02-24 17:28:15
73
原创 代码随想录算法训练营第35天 | 动态规划part04
本文总结了动态规划part04的学习内容,主要包括两道题目:1049.最后一块石头的重量II和494.目标和。对于1049题,核心思路是将石头分成重量相近的两堆,使用一维dp数组解题,重点理解背包问题的遍历顺序。494题则需要将数组分为正负两组,推导出(left+target)/2的公式,理解装满背包的不同方法数。作者承认这些题目难度较大,强调反复思考、模仿代码也是进步,鼓励学习者保持耐心不放弃。通过图片辅助说明解题思路,展现了动态规划解题过程中的思考过程。
2026-02-23 22:23:09
81
原创 代码随想录算法训练营第34天 | 动态规划part03
摘要 本文介绍了动态规划中01背包问题的理论基础。01背包问题是指有n件物品和一个容量为w的背包,每件物品有重量和价值,且只能使用一次,目标是选择装入背包的物品使总价值最大。解决方法是定义二维数组dp[i][j]表示前i件物品放入容量j背包的最大价值,状态转移方程为取或不取第i件物品的较大值。文章还对比了动态规划与回溯法的暴力解法,并解释了C++中初始化二维vector的语法。通过学习掌握了01背包问题的核心思路和实现方法。
2026-02-22 17:03:00
71
原创 代码随想录算法训练营第32天 | 动态规划part01
本文总结了动态规划基础学习内容,包括DP数组的含义、递推公式、初始化、遍历顺序等核心概念,并介绍了背包问题、打家劫舍、股票问题和子序列问题等典型应用场景。通过Carl视频的学习,掌握了动态规划的基本框架和解题思路,为后续算法训练打下基础。文中既记录了学习过程中的困难,也总结了相关收获,为算法能力提升提供了系统指导。
2026-02-15 21:56:33
33
原创 代码随想录算法训练营第30天 | 贪心算法 part04
本文记录了代码随想录算法训练营第30天的学习情况,主要内容为贪心算法part04的学习实践。作者通过抄写Carl的C#代码进行练习,并反思个人精力有限、专注力重要性的感悟。文中包含学习资料链接和一张练习截图,展示了学习过程中的实际操作。虽然遇到一些困难,但也获得相应收获,体现了算法学习过程中的思考与实践相结合的特点。
2026-02-12 22:54:33
36
原创 代码随想录算法训练营第29天 | 贪心算法 part03
摘要: 本文记录了算法训练营第29天关于贪心算法(part03)的学习内容。重点讨论了LeetCode 134题"加油站"的解法,包括暴力解法(双重循环遍历)和更高效的贪心算法实现。学习过程中通过观看Carl的视频讲解,对比了不同解法的思路差异,并总结了贪心算法在此类问题中的应用技巧。虽然遇到一些理解困难,但通过实践加深了对贪心算法特性的掌握,特别是在优化问题解决路径选择方面的收获。
2026-02-11 23:12:35
34
原创 代码随想录算法训练营第28天 | 贪心算法 part02
本文记录了算法训练营第28天关于贪心算法的学习内容。重点分析了LeetCode 122题"买卖股票的最佳时机II"和55题"跳跃游戏"的解题思路。在股票买卖问题中,通过计算差分最大值来确定最大收益;在跳跃游戏中,采用贪心策略判断能否到达终点。文章包含两个问题的代码实现截图,展现了具体的解题过程。通过这两道题的实践,学习者既遇到了困难,也获得了运用贪心算法解决实际问题的经验。全文简明扼要地总结了当天的学习重点和实践成果。
2026-02-10 21:40:25
52
原创 代码随想录算法训练营第27天 | 贪心算法 part01
摘要:本文记录了算法训练营第27天关于贪心算法的学习内容。重点学习了贪心算法的理论基础,即通过局部最优选择达到全局最优。以LeetCode 455题"Assign Cookies"为例,探讨了将孩子贪心因子和饼干尺寸排序后从小到大的匹配策略。学习过程中遇到了初次手敲代码失败的情况,但通过实践获得了对贪心算法应用的理解。全文约150字,总结了当天的学习重点和思考过程。
2026-02-09 20:10:50
46
原创 代码随想录算法训练营第25天 | 回溯算法 part04
本文总结了代码随想录算法训练营第25天的学习内容,重点分析了LeetCode 491题"递增子序列"的解题思路。文章指出该题的关键在于去重处理,并强调由于需要保持原序列顺序,不能对初始序列进行排序。作者反思了近期学习进度落后导致理解困难的问题,认识到基础知识存在欠缺。通过这道题目,作者加深了对回溯算法本质的理解——即所有回溯都是最大深度搜索的过程。全文简洁明了地记录了学习要点和心得体会。
2026-02-07 23:13:28
32
原创 代码随想录算法训练营第16天 | 二叉树 part04
本文总结了二叉树算法训练中的两个关键问题:找树左下角的值(513)和路径总和(112)。在513题中,通过递归回溯方法找到深度最大的最左节点,强调理解递归原理的重要性。112题则重点讲解了确定递归函数返回值、终止条件和单层逻辑的方法,并对比了C#中引用与独立列表的区别。主要收获包括:1) 递归回溯需要扎实的基本功;2) 参数传递方式影响结果存储;3) 视频学习+代码实践是有效的学习方法。困难在于递归原理的理解和应用,建议通过多练习加深掌握。
2026-01-29 15:48:34
260
原创 代码随想录算法训练营第13天 | 二叉树part03
摘要:本文总结了二叉树part03的学习内容,重点讲解了二叉树深度与高度的概念区别(前序与后序遍历),以及根节点高度与树深度的关系。通过C++指针访问对象成员的语法示例,分析了110.平衡二叉树的关键条件图示和257.二叉树所有路径题目中递归与回溯的关系。文章记录了学习过程中的难点与收获,强调递归方法在解决二叉树问题中的重要性。(149字)
2026-01-28 11:29:13
232
原创 代码随想录算法训练营第14天 | 二叉树 part02
本文总结了二叉树相关算法训练内容,重点包括: 翻转二叉树的实现方法(前序/后序遍历),强调中序遍历会导致节点被翻转两次 对称二叉树的递归解法,必须采用后序遍历才能正确传递子节点信息到父节点 通过C#代码实践,验证了算法正确性,并发现原参考代码中缺少的两个边界条件 指出递归本质是从底层向上传递信息的过程,需要完整遍历相关节点 文章展示了算法实现细节和思考过程,包括代码截图和关键逻辑说明。
2026-01-27 12:04:41
196
原创 代码随想录算法训练营第13天 | 二叉树part01
本文介绍了代码随想录算法训练营第13天的学习内容,重点讲解二叉树理论基础。学习资料包括二叉树基本概念、遍历方式等核心知识点。通过理论学习,学员可以掌握二叉树的定义、性质以及递归遍历方法。文章还分享了学习过程中的初念感想、遇到的困难与收获,帮助初学者建立二叉树知识框架,为后续算法学习打下基础。内容简明扼要,适合算法入门者快速了解二叉树基础知识。
2026-01-26 17:23:25
188
原创 代码随想录算法训练营第10天 | 栈与队列part01
本文总结了栈与队列的基础知识及实现方式。栈遵循LIFO(后进先出)原则,队列遵循FIFO(先进先出)原则,两者都不支持遍历功能。通过C#代码示例展示了Stack和Queue的基本操作(Push/Pop和Enqueue/Dequeue)。文章强调在工业级代码开发中应避免复制粘贴,提倡抽象复用功能相近的代码。最后提到LeetCode第232题"用栈实现队列"的实践,体现了数据结构转换的应用。这些内容为算法训练提供了基础理论支持和实践指导。
2026-01-23 09:30:21
264
原创 # 代码随想录算法训练营第9天 | 151.翻转字符串里的单词
摘要:字符串处理与算法训练 本文记录了在代码随想录算法训练营第9天的学习过程,重点研究了151题"翻转字符串里的单词"。作者分享了初次尝试时遇到的困难,包括语法错误(如误用CharAt函数)和对ReverseString函数的误解。虽然初次挑战失败,但通过分析错误和参考Carl的解题思路,获得了宝贵的经验。文章体现了算法学习过程中从错误中成长的真实历程,强调了面对失败时应保持积极态度。学习资料链接和问题描述提供了完整的学习资源。
2026-01-22 10:59:19
150
原创 代码随想录算法训练营第8天 | 344.反转字符串
摘要:本文记录了算法训练营第8天的学习内容,重点探讨了字符串反转问题。对于344题,使用双指针法成功实现字符串反转,分析了时间复杂度和空间复杂度均为O(n)和O(1)。541题尝试使用LINQ处理字符串分段反转,虽提交失败但通过打Log调试获得宝贵经验。文章分享了C#中的字符处理技巧和循环优化方法,强调自主思考实现算法的重要性,即使失败也能从中获得成长。通过实际编码验证了算法理论,并总结了调试技巧。
2026-01-21 12:36:16
144
原创 代码随想录算法训练营第7天 | 454.四数相加II & 383. 赎金信 & 15. 三数之和
本文记录了算法训练营第7天关于LeetCode 454题"四数相加II"的学习过程。首先通过阅读题目解析理解了题目要求返回满足条件的元组数量。解题思路是:1)遍历前两个数组所有元素和,存入字典并记录出现次数;2)遍历后两个数组和,统计能使总和为0的组合数量。文中分享了C#实现的关键语法点,包括字典创建和查找操作。通过这道题加深了对哈希表应用的理解,掌握了利用字典统计元素组合频率的技巧。
2026-01-20 11:15:32
211
原创 代码随想录算法训练营第6天 | 哈希表part01
本文介绍了哈希表的基础知识,包括哈希表定义、哈希函数计算方法以及哈希碰撞的两种解决方案(拉链法和线性探测法)。同时概述了三种常见哈希结构:数组、集合(基于红黑树实现)和映射。文章强调在面试中遇到元素存在性判断问题时,应优先考虑哈希法解决方案。内容涵盖哈希表的核心概念和应用场景,为算法学习提供了基础理论支持。
2026-01-19 08:53:52
315
原创 代码随想录算法训练营第4天 | 24. 两两交换链表中的节点
本文记录了算法训练营第4天学习两两交换链表节点的过程。通过LeetCode题目24的学习,分享了初学思路、实现过程中的困难与收获。重点探讨了链表节点交换的指针操作技巧,总结了递归和迭代两种解法的差异。学习时长未明确记录,但完整覆盖了题目分析与实现过程。
2026-01-17 09:50:51
181
原创 代码随想录算法训练营第3天 | 链表理论基础
本文总结了代码随想录算法训练营第3天关于链表理论基础的学习情况。内容包括学习资料链接、初次接触链表的印象、学习过程中的感想、遇到的困难以及最终收获。记录了完整的知识学习过程,从理论认知到实践理解,最后标注了学习时长,完整呈现了当天的学习轨迹。
2026-01-16 08:21:10
117
原创 代码随想录算法训练营第2天 | 209.长度最小的子数组
本文记录了学习"209.长度最小的子数组"题目的过程。作者最初尝试通过暴力解法+库函数排序的方式解题,但发现对题目理解有误(subarray需保持原数组顺序)。反思后意识到需重新理解题意,优化返回条件(sum≥target时终止循环),并观看视频讲解纠正思路。文章展示了从错误理解到逐步修正的思考过程,最终认识到原解法不适用subarray问题。学习时长未明确记录。
2026-01-15 10:25:46
260
原创 代码随想录算法训练营第1天 | 数组理论基础
本文总结了数组理论基础的学习要点:数组是连续内存空间存储的相同类型数据集合,通过下标索引访问元素,元素只能覆盖不能删除。C++中vector是容器而非数组,数组内存地址连续。重点介绍了二分查找算法(LeetCode 704题)。学习过程中遇到时间管理的困难,共投入1小时学习时长。
2026-01-14 17:23:55
190
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅