- 博客(28)
- 收藏
- 关注
原创 代码随想录算法训练营第17天|654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜素树
本文介绍了四个二叉树相关算法题的解法:1) 654题通过递归构建最大二叉树,每次选择当前数组最大值作为根节点;2) 617题采用递归合并两棵二叉树,重叠节点值相加;3) 700题在二叉搜索树中递归搜索目标值;4) 98题利用中序遍历验证二叉搜索树的有序性。所有解法都采用递归实现,时间复杂度均为O(n),空间复杂度取决于树的高度。
2026-05-05 16:41:39
201
原创 代码随想录算法训练营第16天|513.找树左下角的值、112.路径总和、106.从中序与后序遍历序列构造二叉树
本文介绍了三个二叉树相关算法题的解法: 找树左下角的值:使用深度优先遍历,通过比较叶子节点深度找到最底层最左边的节点值。 路径总和:采用递归方法,在遍历过程中不断减去节点值,当到达叶子节点且剩余值为0时返回true。 从中序与后序遍历序列构造二叉树:通过后序数组确定根节点,切割中序数组为左右子树,递归构建整棵树。 这三个算法都使用了递归思想,通过分解问题为子问题来处理二叉树结构。第一个问题关注深度遍历,第二个问题处理路径计算,第三个问题解决树的构建,展示了递归在二叉树问题中的典型应用。
2026-05-04 22:40:42
30
原创 代码随想录算法训练营第十五天|110.平衡二叉树、257.二叉树的所有路径、404.左叶子之和、222.完全二叉树的节点个数
本文整理了二叉树相关的四个算法题解: 平衡二叉树判断(110题):通过后序遍历计算子树高度差,若超过1则返回false。 二叉树所有路径(257题):采用前序遍历记录路径,使用引用传递并在回溯时弹出元素。 左叶子节点求和(404题):递归遍历时识别左叶子节点并累加其值。 完全二叉树节点计数(222题):利用完全二叉树特性,比较左右子树深度进行快速计算。 这些解法展示了二叉树遍历、递归和回溯等典型算法技巧,时间复杂度均为O(n)。
2026-05-01 17:54:35
28
原创 代码随想录算法训练营第14天|226.翻转二叉树、101.对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度
这篇文章介绍了四个二叉树相关算法的C#实现方案: 翻转二叉树(226题):使用前序遍历递归交换每个节点的左右子树。 对称二叉树(101题):通过后续遍历比较左右子树的外侧和内侧节点是否对称。 二叉树的最大深度(104题):采用后续遍历计算左右子树的最大高度。 二叉树的最小深度(111题):类似最大深度计算,但需处理单侧子树为空的情况。 所有方案都遵循递归思想,针对不同二叉树特性采用相应遍历方式,时间复杂度均为O(n)。代码结构清晰,每个解法都包含节点定义和完整实现。
2026-04-28 20:09:05
30
原创 代码随想录算法训练营第十三天|二叉树理论基础、递归遍历(144、145、94)、102.层序遍历
本文介绍了二叉树的基本概念和遍历方法。主要内容包括:1) 二叉树种类:满二叉树、完全二叉树、二叉搜索树和平衡二叉搜索树的定义与区别;2) 存储方式:链式存储和线性存储(数组);3) 遍历方式:深度优先(前序、中序、后序)和广度优先(层序)遍历的实现原理;4) 提供了C#实现的递归遍历代码示例(前序、中序、后序)和层序遍历的队列实现方法。通过图文结合的方式清晰展示了各类二叉树结构和遍历顺序。
2026-04-27 17:28:33
224
原创 代码随想录算法训练营第十一天|150.逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素
本文介绍了三个算法问题的解决方案:1) 逆波兰表达式求值,使用栈结构处理运算符和操作数;2) 滑动窗口最大值,通过单调队列维护窗口内最大值;3) 前K个高频元素,利用小顶堆统计元素出现频率。每个问题都提供了C#实现代码,分别展示了栈、队列和堆等数据结构在算法中的应用。这些解决方案都遵循了高效处理数据的思路,具有明确的时间复杂度优化考虑。
2026-04-25 15:06:10
36
原创 代码随想录算法训练营第十天|栈与队列理论基础、232.用栈实现队列、225.用队列实现栈、20.有效的括号、1047. 删除字符串中的所有相邻重复项
本文介绍了栈和队列的相互实现以及相关算法应用。首先通过两个栈实现队列功能,一个负责入队,一个负责出队;其次用单队列实现栈,通过循环移位操作模拟栈的后进先出特性。然后讲解了有效括号匹配算法,使用栈存储预期右括号进行匹配验证。最后展示了删除字符串相邻重复项的解法,利用字符串模拟栈结构,遇到相同字符则出栈。这些案例展示了栈和队列在算法中的灵活运用,体现了它们处理特定问题的优势。
2026-04-24 17:01:54
48
原创 代码随想录算法训练营第九天|151.翻转字符串里的单词、卡码网:55.右旋转字符串
这篇文章介绍了两个字符串翻转问题的解决方案。第一个问题要求翻转字符串中的单词顺序,通过先整体翻转字符串再逐个翻转单词来实现,并包含去除多余空格的处理。第二个问题是将字符串后n个字符移到前面,采用三次翻转的方法:先整体翻转,再分别翻转前n个字符和剩余字符。两个问题都利用了字符串翻转的经典技巧,通过局部翻转和整体翻转的配合来达到最终效果,代码实现清晰展示了这一思路。
2026-04-23 10:50:26
33
原创 代码随想录算法训练营第八天|344.反转字符串、541.反转字符串II、卡码网:54.替换数字
本文介绍了三个字符串处理问题的解法:1)使用双指针反转字符数组;2)以2k为步长翻转字符串中前k个字符;3)将字符串中的数字替换为"number"。每个问题都给出了C#实现代码,核心思路包括双指针技巧、分步处理和字符数组操作。这些解法展示了处理字符串反转和替换的常见方法,时间复杂度均为O(n),适用于各类字符串处理场景。
2026-04-22 11:24:35
32
原创 代码随想录算法训练营第七天|454.四数相加II、383.赎金信、15.三数之和、18.四数之和
本文摘要了四道LeetCode算法题的解题思路和代码实现: 四数相加II(454题):使用字典存储前两个数组元素和及其出现次数,然后计算后两个数组元素和的相反数在字典中的出现次数。 赎金信(383题):通过哈希数组统计杂志字符出现次数,然后检查赎金信字符是否都能被满足。 三数之和(15题)和四数之和(18题):采用排序+双指针法,处理时需要注意去重和边界条件,特别是四数之和中要考虑大数溢出的情况。 这些题目都利用了哈希表或双指针等常见算法技巧,展示了处理多元素求和问题的典型方法。
2026-04-21 10:54:09
51
原创 代码随想录算法训练营第六天|哈希表理论基础、242.有效的字母异位词、349.两个数组的交集、202.快乐数、1.两数之和
本文介绍了哈希表的基本概念和应用场景。哈希表通过关键码直接访问数据,常用于快速查找元素是否存在。文章详细讲解了哈希函数的工作原理、哈希冲突的解决方法(拉链法和线性探测法),并通过三个编程题展示了哈希表的实际应用:1)使用数组统计字母频率判断异位词;2)利用HashSet求数组交集;3)用哈希检测快乐数的循环情况。最后还演示了如何用字典解决两数之和问题,通过存储数值和索引快速查找目标差值。这些例子充分展示了哈希表在算法解题中的高效性和实用性。
2026-04-20 16:59:35
199
原创 代码随想录算法训练营第四天|24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II
本文介绍了三个链表操作的算法实现: 两两交换链表节点:通过虚拟头节点和临时指针保存节点,逐步交换相邻节点位置,时间复杂度O(n),空间复杂度O(1)。 删除链表倒数第n个节点:使用快慢指针,快指针先移动n+1步,然后两指针同步移动,当快指针到末尾时慢指针即指向待删节点的前驱,时间复杂度O(n),空间复杂度O(1)。 环形链表检测:快慢指针相遇后,从头节点和相遇点同时出发的指针将在环入口处相遇,基于x=z的数学推导,时间复杂度O(n),空间复杂度O1)。 这些算法都采用了双指针技巧,通过合理的指针移动和临时变
2026-04-18 11:08:42
249
原创 代码随想录算法训练营第三天|链表理论基础、203.移除链表元素、707.设计链表、206.反转链表
本文介绍了链表的基础理论和相关算法题解。主要内容包括:1)链表结构特点及与数组的时间复杂度对比;2)移除链表元素的两种方法(原始链表和虚拟头节点);3)设计链表的实现要点;4)反转链表的双指针和递归解法。文章通过C#代码示例详细说明了各算法的实现思路,强调了虚拟头节点在处理链表问题中的重要作用。
2026-04-17 18:21:22
261
原创 代码随想录算法训练营第二天|209.长度最小的子数组、 59.螺旋矩阵II、区间和、开发商购买土地
本文摘要了四个算法问题的解决方案: 209题"长度最小的子数组":比较了暴力解法(双层循环)和优化的滑动窗口解法,后者通过动态调整窗口边界来高效查找满足条件的最小子数组。 59题"螺旋矩阵II":展示了生成n×n螺旋矩阵的方法,通过分层循环和固定规则填充数字,处理了奇数阶矩阵的中心点特殊情况。 区间和计算:介绍了前缀和技巧,通过预处理构建前缀和数组,实现O(1)时间复杂度的区间和查询。 土地分割问题:使用前缀和思想分别计算行方向和列方向的和,通过比较不同分割方案的价值
2026-04-16 16:48:43
237
原创 代码随想录算法训练营第一天|704.二分查找、27.移除元素、977.有序数组的平方
数组是存储在连续内存空间中的一组相同类型的数据集合。可以通过数组下标访问对应元素,数组的下标通常从1开始。数组中的元素地址通常是连续的,但对于二维数组则不一定。比如C++中二维数组的地址通常是连续的,但Java则不连续。
2026-04-15 10:24:57
101
原创 函数和图像
函数是将一个对象转化为另一个对象的规则。被转化的对象称为输入,来自称为定义域的集合。转化后的对象称为输出,来自称为上域的集合我们通常这样定义一个函数fxx2f(x)=x^2fxx2请注意这不代表f(x)是一个函数,准确的说f(x)是把这个变换规则应用于变量x后得到的果。而f是一个变换规则,即f才是我们通俗意义上所说的函数一个函数必须给每一个有效的输入指定唯一的输出定义域:使函数有意义的值的集合值域是所有可能的输出组成的集合定义域会出问题的三种情况分数的分母不可能是0。
2024-05-29 09:11:58
1928
原创 html中的图像标签
相对路径以当前文件的位置为参考点,绝对路径以盘符为参考点。在这里我们要了解一下相对路径和绝对路径的概念。那么怎么在html中显示图像呢?在html中,一般提倡使用相对路径。
2024-05-27 11:40:02
430
原创 html中的基本标签
我们写的代码对别人来说就像一个陌生的物品,他们在维护时,自然也想要一份说明书,而这个说明书自然就是我们在代码中写的注释了,在html中注释通常被。上文中已经提过,html中多个空白符号会被转换为一个空格,那如果我就是想在html中打多个空格呢?在日常生活中,我们经常看到一些应用了特殊样式的文字,用来强调内容,那么html中是否也可以通过对某些字体应用特殊的样式强调呢?当我们在html中想使用这些符号时,就需要使用它们对应的转义字符。明明已经手动分好的段落,在浏览器中却又成了一堆,这是为什么呢。
2024-05-27 11:24:51
407
原创 初识HTML
fromModule=lemma_inlink)(微小改进):1999年12月24日,W3C推荐标准。HTML定义了网页的结构,CSS让网页更加好看,js使网页变得更具交互性。html所有的内容都是通过一个个的标签来定义的,既有如。这种形式的标签,也有。
2024-05-25 14:21:59
395
原创 js中的函数
定义函数通常使用function关键字,一个函数通常包含以下四部分function关键字函数名函数的参数列表被{}括起来的函数语句function person (name, age /* 函数的参数可以有一个,也可以有多个甚至没有,如果有多个参数,每个参数之间用,分隔 */) {
2023-11-13 18:11:52
88
原创 python中的参数传递
python中一切皆对象python中的参数传递都是把实参指向的对象传递给形参,但具体是否会影响实参取决于调用方式和对象类型是否可变。
2023-08-27 07:28:30
133
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅