- 博客(9)
- 收藏
- 关注
原创 LeetCode | 2327. 知道秘密的人数(Number of People Aware of A Secret)
本文提出了一种使用双端队列模拟秘密传播过程的算法。通过维护两个队列(know和share)分别记录知道秘密和会分享秘密的人,并利用计数器优化计算效率。算法在每天处理三件事:1) 达到延迟时间的人转入分享队列;2) 达到遗忘时间的人移出系统;3) 分享者传播新秘密。时间复杂度O(n),空间复杂度O(n)。关键优化在于使用计数器避免遍历队列,将第三步的时间复杂度从O(n)降至O(1)。最终结果为知道和分享秘密人数之和模10^9+7,防止数值溢出。该框架适用于类似有时间延迟和过期机制的事件模拟问题。
2025-09-09 16:51:52
1452
原创 3DSG代码详解(一) | gaussian-splatting/scene/gaussian.model.py | 小白友好入门级 / 逐句解析超详细
摘要:该代码实现了3D高斯splatting模型的核心功能,包括参数初始化、状态管理、训练优化和模型保存。主要特性包括:1)使用球谐函数表示视角相关颜色;2)通过可微分高斯光栅化进行渲染;3)支持多种优化器和学习率调度策略;4)提供完整的模型保存和恢复功能。关键组件包括高斯参数表示(位置、旋转、缩放、不透明度)、协方差矩阵计算、自适应密度控制以及PLY格式的模型输入输出。该实现充分利用PyTorch框架,支持GPU加速训练,适用于高质量的3D场景重建和渲染任务。
2025-09-08 16:06:46
1060
原创 3DSG代码详解(五) | gaussian-splatting/scene/gaussian.model.py | 小白友好入门级 / 逐句解析超详细
文章摘要: 该代码实现了3D高斯泼溅(3DGS)的自适应密度控制功能,主要包括点云的加载、优化器管理、密度调整和剪枝等核心操作。关键方法包括: load_ply() - 从PLY文件加载高斯模型数据,处理位置、颜色、透明度和球形谐波系数等属性; 优化器管理方法(_prune_optimizer, replace_tensor_to_optimizer等) - 处理动态点云结构变化时的优化器状态更新; 密度控制方法(densify_and_clone, densify_and_split) - 基于梯度信息自
2025-09-06 15:15:55
1188
原创 LeetCode | 水果成篮 II & III (Fruits into Baskets II & III)
本文介绍了两种解决水果放置问题的算法。对于小规模数据(n≤100),使用暴力枚举法(O(n²)时间复杂度),遍历每个水果寻找第一个可用篮子。对于大规模数据(n≤10⁵),提出两种优化方法:1)线段树法(O(nlogn)),通过构建维护最大值的线段树快速查找可用篮子;2)分块法(O(n√n)),将篮子数组分块并维护块内最大值。两种优化方法均显著提升了处理效率,适用于不同规模的数据场景。文章详细分析了各方法的实现步骤、复杂度及空间优化技巧,并提供了Python代码实现。
2025-08-07 14:02:17
1064
原创 LeetCode | 904. 水果成篮 ( Fruit into Baskets)
摘要: 题目要求在最多采摘两种水果种类的限制下,从一排果树中找出能连续采摘的最长子数组。解题采用滑动窗口法:维护一个双指针窗口,用字典记录当前水果种类及数量。右指针扩展窗口,当种类超过2时,左指针收缩窗口直到恢复两种水果,同时更新最大采摘数。算法时间复杂度O(n),空间复杂度O(1)。示例解析展示了不同输入的最优采摘策略。
2025-08-05 11:52:13
1048
原创 LeetCode | 59. 螺旋矩阵 II (Spiral Matrix II )
本文介绍了两种生成n×n螺旋矩阵的算法:方向模拟法和边界收缩法。方向模拟法通过定义方向数组控制填充路径,遇到边界或已填充位置时顺时针旋转方向,时间复杂度O(n²)。边界收缩法将矩阵视为层层嵌套结构,通过维护四个边界逐层填充,每层填充后边界向内收缩。两种方法均实现了O(1)空间复杂度,执行效率相近(0ms)。文章对比了两种实现的关键细节,包括循环变量取值、方向索引操作和边界移动逻辑,并提供了清晰的代码示例。该问题在LeetCode编号为59题,适用于1≤n≤20的情况。
2025-08-02 22:44:27
979
原创 LeetCode | 73. 矩阵置零 (Set Matrix Zeroes)
本文介绍了将矩阵中零元素所在行和列置零的三种解法。方法一使用O(m+n)空间存储标记,遍历两次矩阵;方法二用原矩阵首行首列作为标记,额外存储首行首列原始信息;方法三优化空间至O(1),仅用首列标记并倒序处理。三种方法时间复杂度均为O(mn),但空间复杂度逐步降低。其中方法一最直观(18.35MB),方法二(18.02MB)和方法三(18.13MB)实现了原地修改,满足进阶要求。代码均已通过力扣测试。
2025-08-02 16:39:16
555
原创 LeetCode | 48. 旋转图像 (Rotate Image)
链接:https://leetcode.cn/problems/rotate-image/solutions/1228078/48-xuan-zhuan-tu-xiang-fu-zhu-ju-zhen-yu-jobi/ 来源:力扣(LeetCode) 著作权归作者所有。输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]
2025-07-24 15:44:24
409
1
原创 LeetCode | 3. 无重复字符的最长子串 (Longest Substring without Repeating Characters)
本文介绍如何寻找字符串中最长无重复字符子串的长度。使用滑动窗口和哈希集合,通过移动左右指针来维护当前窗口,确保其中字符唯一。左指针移动时从集合删除字符,右指针移动时添加字符,同时更新最大长度。算法时间复杂度O(n),空间复杂度O(min(n,字符集大小))。Python实现利用集合特性高效判断重复,最终返回最大子串长度。该方法在LeetCode上执行用时23ms,内存消耗17.6MB。
2025-07-22 14:38:58
264
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅