自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 【推荐系统】矩阵分解之FunkSVD和BiasSVD

推荐系统中,BiasSVD 通过引入偏置项,解决了 FunkSVD 无法区分 “系统性偏差” 和 “用户 - 物品交互” 的问题,是更常用的矩阵分解模型。在实际应用中,BiasSVD 通常比 FunkSVD 表现更好,尤其在评分数据稀疏时,偏置项的作用更为明显。

2025-11-13 20:15:36 863

原创 【LeetCode】236.二叉树的最近公共祖先

摘要 本文探讨了二叉树中寻找两个节点最近公共祖先(LCA)的问题。通过递归方法,利用后序遍历从下往上搜索,分两种情况处理:当p和q分居当前节点左右子树时,当前节点即为LCA;当p在q的子树中时,直接返回先找到的节点。递归终止条件是遇到空节点或找到目标节点。算法时间复杂度O(N),空间复杂度O(h),其中h为树高。

2025-11-11 22:00:12 649

原创 【LeetCode】173.二叉搜索树迭代器

本文实现了一个二叉搜索树迭代器BSTIterator,支持中序遍历的惰性求值。关键点在于: 使用栈模拟递归,仅保存当前路径节点,空间复杂度O(h); next()方法每次弹出栈顶元素,并将右子树的左链压栈,保证每次返回最小值; hasNext()判断栈或当前节点是否为空; 均摊时间复杂度O(1),符合迭代器按需访问的特性,避免了一次性遍历的高内存消耗。该设计充分利用BST的中序有序特性,实现高效渐进式遍历。

2025-11-11 21:10:12 743

原创 【LeetCode】222. 完全二叉树的节点个数

本文介绍了计算完全二叉树节点数的两种方法: 递归法:适用于所有二叉树,直接递归计算左右子树节点数之和加1,简单但未利用完全二叉树特性。 优化方法:利用完全二叉树特性,通过比较左右子树高度来分情况计算: 若左右高度相等,则左子树为满二叉树,可直接计算其节点数(2^高度-1),再递归计算右子树 若高度不等,则右子树为满二叉树,直接计算其节点数,再递归计算左子树 使用位运算(1<<高度)快速计算2的幂次 该方法时间复杂度为O(logN * logN),比普通递归法的O(N)更高效。

2025-11-10 23:16:40 582

原创 【LeetCode】124.二叉树中的最大路径和

摘要 该题要求计算二叉树中的最大路径和。路径定义为节点序列,相邻节点间有边相连,节点不重复出现。解决方法采用递归遍历:对于每个节点,计算其左/右子树的最大贡献值(若为负则取0),然后以该节点为根的路径和可能是当前值加上左右贡献值。使用全局变量记录遍历过程中的最大值。时间复杂度O(n),空间复杂度O(n)。Java实现通过递归函数计算子树贡献值并更新全局最大路径和。

2025-11-09 16:29:21 226

原创 【LeetCode】129.求根节点到叶节点数字之和

本文介绍了解决二叉树路径总和问题的两种方法。对于「根到叶数字之和」问题,采用深度优先搜索,在遍历过程中累计路径数字,当到达叶子节点时将路径数字加入总和。对于「路径总和」问题,通过递归从目标值中减去节点值,判断是否存在路径满足条件。两种方法时间复杂度均为O(n),空间复杂度为O(n)。文末提供了对应的Java实现代码。

2025-11-09 15:21:11 257

原创 【LeetCode】105.从前序与中序遍历序列构造二叉树

本文介绍了如何通过二叉树的前序和中序遍历序列重建原二叉树。前序遍历的第一个元素是根节点,在中序遍历中找到该节点位置,其左侧构成左子树,右侧构成右子树。递归处理左右子树即可完成构建。实现时使用哈希表存储中序节点位置以优化查询效率。时间复杂度O(n),空间复杂度O(n)。代码展示了Java实现,通过辅助函数处理子树边界,最终返回完整二叉树结构。

2025-11-04 16:28:59 144

原创 【LeetCode】101.对称二叉树

本文通过递归方法判断二叉树是否轴对称。轴对称的条件包括:左右节点都为空返回true;若仅一侧为空则返回false;当节点值不等时返回false;否则递归检查左节点的左孩子与右节点的右孩子,以及左节点的右孩子与右节点的左孩子是否对称。代码简洁地实现了这一逻辑,通过比较左右子树来判断整棵树的对称性。

2025-11-03 22:09:37 254

原创 【LeetCode】226.翻转二叉树

摘要 本文介绍了如何通过递归方法翻转一棵二叉树。核心思路是从顶向下依次交换每个节点的左右子树。递归过程包括:当节点为空时终止;否则先递归翻转左右子树,再交换当前节点的左右指针。时间复杂度为O(n),每个节点访问一次。空间复杂度取决于树高h,最坏O(n),平衡树时为O(log n)。代码示例展示了Java实现,简洁高效地完成了二叉树翻转任务。

2025-11-03 21:44:07 221

原创 【LeetCode】134.加油站

该问题要求在环形加油站路线上找到一个起点,使得汽车可以绕行一周。关键思路是:1) 如果总油量不足以覆盖总消耗,则无解;2) 贪心算法优化,当从起点到某点的油量不足时,直接跳过中间所有点作为候选起点。具体实现:遍历时将当前油量差累计在tank中,若tank为负则重置起点,同时计算总油量差total。最终若total≥0则唯一解为最后记录的起点,否则无解。时间复杂度O(n),空间O(1)。

2025-11-01 17:09:35 869

原创 【LeetCode】274.H指数

本文介绍了计算研究者H指数的方法。H指数定义为:研究者至少有h篇论文,每篇被引用至少h次。解决方案是先对引用次数数组进行排序,然后从高到低遍历,找到最大的h满足citations[i]≥h(其中h=n-i)。代码示例提供了两种实现方式:升序排列后反向遍历,或直接正向遍历。时间复杂度为O(n log n)(主要由排序决定),空间复杂度为O(1)。核心思想是通过排序和线性扫描高效确定最大H指数。

2025-10-30 12:02:57 239

原创 【LeetCode】45.跳跃游戏II

本文介绍了使用贪心算法求解跳跃游戏II问题的方法。给定一个整数数组nums表示每个位置的最大跳跃长度,计算从数组起点到终点的最小跳跃次数。关键思路是通过维护当前跳跃范围[start, end],在每步中选择能跳到的最远位置maxStep,直到覆盖终点。算法实现循环更新跳跃范围,每跳一次增加步数计数。时间复杂度为O(n),空间复杂度O(1)。代码展示了Java实现,适用于解决类似的最优路径问题。

2025-10-30 10:49:35 102

原创 【数据结构】最大堆的构建

(最大堆:每个父节点 ≥ 两个子节点,根节点最大。

2025-08-29 10:14:01 404

原创 【RL初学-3】Safety-critical and Robust sysytem 的一些思考

优先保障安全性的策略首先要求确保在任何情况下,智能体都不能进入危险区域,而后再逐步引入不确定性并优化鲁棒性。这种方法能够有效地保证智能体在安全性上不妥协,并在此基础上逐步增强其对环境不确定性的适应能力。在实际应用中,这对于那些高度依赖安全性(如自动驾驶、医疗机器人等)且可能面对动态环境的任务尤为重要。

2024-11-25 22:09:18 865

原创 【RL初学-2】处理分段线性的Lyapunov函数的Subgradient方法

Subgradient方法是一个强大的工具,适用于处理非光滑凸优化问题。通过合理选择步长和改进策略,可以有效地求解复杂的优化问题。

2024-11-25 22:08:47 661

原创 【RL初学-1】如何利用gym中倒立摆的源码绘制角度-角速度轨迹

通过这种方式,我们可以在每次迭代过程中实时绘制角度和角速度的关系曲线。注:部分为GPT生成,仅供个人备忘所用。

2024-09-21 10:36:56 468

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除