- 博客(408)
- 资源 (1)
- 收藏
- 关注
原创 LeetCode第363题_矩形区域不超过K的最大数值和
本文解析LeetCode第363题"矩形区域不超过K的最大数值和",提供动态规划与前缀和的优化解法。题目要求在m×n矩阵中找到矩形区域,使其数值和不超过k且最大。采用前缀和结合二分查找的方法,时间复杂度O(m²nlogn),空间复杂度O(n)。文章包含C#、Python、C++三种实现,详细分析算法逻辑和性能对比。C++实现执行最快(28ms),Python代码简洁但内存占用较大(16.4MB)。关键点在于正确计算前缀和、使用TreeSet优化查找过程,并处理边界条件。适合中级以上算法学
2025-08-02 02:00:00
658
原创 LeetCode第362题_敲击计数器
LeetCode 362敲击计数器摘要 本文解析了LeetCode第362题"敲击计数器"的设计问题,要求实现记录和统计过去5分钟内敲击次数的功能。提供了两种高效解法: 队列方法:使用队列存储时间戳,hit操作O(1),getHits操作O(n)(需移除过期项) 数组方法:利用双数组和取模运算,hit和getHits均为O(1)时间复杂度 代码实现包含C#、Python、C++三种语言版本,适合需要优化时间窗口统计问题的开发者参考。题目考察数据结构选择和设计模式应用能力,难度中等。
2025-08-02 01:00:00
753
原创 LeetCode第361题_轰炸敌人
LeetCode 361题"轰炸敌人"是一道中等难度的动态规划问题。题目要求在给定的网格中找出放置炸弹的最佳位置,使其能消灭最多敌人。本文提供了C#、Python两种实现方案,通过四个方向的动态规划数组分别计算每个位置向上、下、左、右能消灭的敌人数。算法时间复杂度为O(mn),空间复杂度为O(mn)。解题关键点在于正确处理墙的阻挡和敌人的计数逻辑,适合想提升动态规划技能的开发者学习。
2025-08-01 02:00:00
715
原创 LeetCode第360题_有序转化数组
LeetCode 360题解析:双指针解决有序转化数组问题 本文介绍了LeetCode第360题"有序转化数组"的解题方法,该题要求对已排序数组进行二次函数变换后重新排序。核心思路是利用双指针技术,根据二次函数开口方向(a的正负)决定处理策略:当a>0时,函数值呈两端大中间小的抛物线特征,从后向前填充结果;当a<0时呈两端小中间大特征,从前向后填充。提供了C#、Python、C++三种实现,均以O(n)时间复杂度和O(n)空间复杂度解决问题。 关键点: 根据a的符号区分处理逻
2025-08-01 01:00:00
718
原创 LeetCode第359题_日志速率限制器
本文解析LeetCode第359题"日志速率限制器",要求设计一个系统来判断日志消息是否应在给定时间窗口内打印。通过哈希表存储消息最后打印时间,实现O(1)时间复杂度的查询和更新。文章提供了C#、Python、C++三种实现,分析了性能差异(C++最快,Python最简洁),并对比了不同解法。适合有一定数据结构基础、想提升系统设计能力的程序员阅读,附带相关题目推荐和互动交流建议。
2025-07-31 02:00:00
1118
原创 LeetCode第358题_K距离间隔重排字符串
本文详细解析了LeetCode 358题"K距离间隔重排字符串"的解法。这道题要求重新排列字符串,使相同字符之间至少间隔k个字符。文章提供了基于优先队列的贪心算法解决方案,包含C#、Python、C++三种实现,并比较了它们的性能。C++实现最优(0ms),Python代码简洁(32ms),C#类型安全(156ms)。算法核心是统计字符频率后,每次取出k个不同字符重新排列,若无法满足条件则返回空字符串。该解法时间复杂度O(n log n),空间复杂度O(n),适合希望提升贪心算法应用能力
2025-07-31 01:00:00
1003
原创 LeetCode第357题_计算各个位数不同的数字个数
LeetCode第357题解析:计算各位数字不同的数字个数 这道中等难度题目要求计算0到10^n范围内各位数字不重复的数字数量。文章提供了基于排列组合的数学解法,时间复杂度O(n),空间复杂度O(1),并给出C#、Python、C++三种实现。 关键点: n=0和n=1的特殊情况处理 从第二位开始,每位可选数字数递减 最优解法利用排列组合公式,避免暴力枚举 三种语言实现均高效,其中C++执行最快,C#内存占用最小,Python代码最简洁。文章还分析了常见错误,对比了不同解法,并推荐了相关题目。
2025-07-30 02:00:00
1558
原创 LeetCode第356题_直线镜像
LeetCode 356题解析:直线镜像问题 这道中等难度的几何题要求判断平面点集是否存在对称轴。解题关键在于:1)确定潜在的对称轴位置(通过x坐标极值计算);2)利用哈希表快速验证每个点的对称点是否存在。文章提供了C#、Python、C++三种实现,均采用O(n)时间复杂度的解法,其中C++版本执行效率最佳(0ms)。特别处理了边界条件,如空输入和单点情况。核心思路是将几何问题转化为数学计算和高效查找问题,适合希望提升空间思维能力的开发者。同类型题目可延伸至直线点集、矩形面积等几何问题。
2025-07-30 01:00:00
1280
原创 LeetCode第355题_设计推特
LeetCode 355题:设计推特 - 摘要 这是一道中等难度的系统设计题目,要求实现一个简化版的推特功能。核心功能包括发送推文、获取最近10条推文、关注/取消关注其他用户。 关键点: 使用哈希表存储用户关注列表和推文列表 采用优先队列(堆)高效获取最近推文 时间戳记录推文发送顺序 实现复杂度: 发推文:O(1) 获取推文:O(n log k) 关注/取消关注:O(1) 提供C#、Python、C++三种实现方案,适合想要提升系统设计能力和数据结构应用的程序员练习。
2025-07-29 02:00:00
685
原创 LeetCode第354题_俄罗斯套娃信封问题
LeetCode第354题俄罗斯套娃信封问题详解:该问题要求计算最多能嵌套的信封数量,可转化为最长递增子序列问题。文章提供了两种解法:1)排序+二分查找(O(nlogn)时间复杂度),先按宽度升序、高度降序排序,再对高度求最长递增子序列;2)动态规划(O(n²))。包含C#、Python、C++三种语言实现,对比了执行效率(C++最快32ms)。关键点在于正确处理宽度相同的情况,将二维问题转化为一维问题。适合有一定算法基础的程序员学习动态规划和二分查找的应用。
2025-07-29 01:00:00
790
原创 LeetCode第353题_贪吃蛇游戏
贪吃蛇游戏设计解析 本文讲解LeetCode第353题"贪吃蛇游戏"的设计与实现。题目要求设计一个贪吃蛇游戏系统,包含移动、得分和碰撞检测功能。文章提供了双端队列+哈希集合的优化解法,并给出C#、Java、Python三种实现。 核心思路: 使用双端队列存储蛇身,头部表示蛇头 哈希集合快速检测碰撞 移动时先计算新蛇头位置,再处理食物和碰撞 复杂度分析: 时间复杂度:O(1)每次移动 空间复杂度:O(n)存储蛇身 该解法高效处理了游戏核心逻辑,适合学习数据结构应用和游戏开发基础。
2025-07-28 03:00:00
1060
原创 LeetCode第352题_将数据流变为多个不相交区间
本文解析LeetCode第352题"将数据流变为多个不相交区间",介绍使用有序集合(TreeMap)处理动态数据流并维护不相交区间的解决方案。文章详细阐述了算法思路,包括查找相邻区间、处理合并逻辑等,并提供C#、Java、Python三种实现代码。这道题考察了数据结构应用和区间合并技巧,适合准备面试或提升算法能力的开发者学习。关键点在于如何高效维护有序区间集合,并在添加新数字时正确处理各种合并情况。
2025-07-28 02:30:00
693
原创 LeetCode第350题_两个数组的交集II
LeetCode 350题解析:两个数组的交集 II 摘要 本文详细讲解了三个有效解法: 1️⃣ 哈希表法:统计元素频率,空间O(min(m,n)) 2️⃣ 双指针法:先排序后比较,空间O(1) 3️⃣ 二分查找法:适合有序数组,时间复杂度O(min(mlogn,nlogm)) 提供C#、Python、C++三种实现,包含完整代码和性能对比。特别指出常见错误和优化技巧,如优先处理较短数组以节省空间。 适合准备算法面试的程序员,帮助掌握哈希表和双指针技巧,附有相关题目链接和进阶思考题。 #算法 #哈希表 #双
2025-07-27 22:02:27
865
原创 LeetCode第349题_两个数组的交集
本文解析LeetCode 349题"两个数组的交集",提供哈希集合和数组标记两种解法,包含C#、Python、C++三种语言实现。哈希法利用集合特性去重,时间复杂度O(n+m);数组法利用数值范围限制优化空间。文章详细对比了各语言执行性能(C++最快4ms),分析了常见错误,并推荐了相关扩展题目。适合算法初学者和面试备考者学习哈希表应用和集合操作。
2025-07-27 22:00:24
981
原创 LeetCode第348题_设计井字棋
本文解析LeetCode第348题"设计井字棋",提供了二维数组和空间优化两种解法。空间优化方案使用数组记录行列和对角线状态,将玩家1和2分别记为1和-1,当某行/列/对角线绝对值为n时判定获胜。该方法时间复杂度O(1),空间复杂度O(n),优于二维数组的O(n^2)。文章包含C#、Python、C++三种实现代码,适合学习游戏设计和矩阵操作的程序员参考。
2025-07-26 02:00:00
966
原创 LeetCode第347题_前K个高频元素
LeetCode 347题解:前K个高频元素 本文提供两种高效解法: 优先队列法(O(nlogk)):使用哈希表统计频率,小顶堆维护前K元素 桶排序法(O(n)):构建频率桶,从高到低收集结果 核心思路: 统计元素频率 优先队列动态维护K个最大值 桶排序避免完全排序 代码实现: 包含C#、Python、C++三种语言版本,均通过测试用例。 性能对比: 桶排序法时间复杂度更优,适合大数据量场景;优先队列法实现更简洁。
2025-07-25 02:00:00
1144
原创 LeetCode第346题_数据流中的移动平均值
LeetCode 346题解:数据流中的移动平均值 这道题要求实现一个计算数据流移动平均值的类,使用滑动窗口技术。解题关键在于高效维护窗口内的元素和。文章提供了两种解法:队列和循环数组,分析其时间复杂度均为O(1),空间复杂度O(size)。队列实现更直观,循环数组空间利用率更高。代码示例包含C#、Python、C++三种语言实现,其中C++性能最优。边界条件处理需注意整数除法精度问题。相关题目推荐了滑动窗口最大值等类似问题。适合算法初学者掌握基本数据流处理技巧。
2025-07-25 01:00:00
660
原创 LeetCode第345题_反转字符串中的元音字母
本文解析LeetCode第345题"反转字符串中的元音字母",提供双指针解法及C#、Python、C++三语言实现。通过HashSet存储元音字母,双指针从两端向中间移动交换元音字母,时间复杂度O(n),空间复杂度O(1)。包含详细解题步骤、图解示例、性能对比及常见错误分析,适合初学算法的开发者掌握字符串操作技巧。
2025-07-24 02:00:00
643
原创 LeetCode第344题_反转字符串
本文解析LeetCode第344题"反转字符串",提供了双指针和递归两种解法及C#、Python、C++实现。双指针法通过从两端向中间交换字符实现O(n)时间复杂度和O(1)空间复杂度的原地算法,递归法则展现优雅代码但空间复杂度较高。文章包含详细步骤分析、性能对比(C++最快)、常见错误提示及相关题目推荐,适合初学算法的开发者掌握字符串反转核心技巧。
2025-07-24 01:00:00
850
原创 LeetCode第343题_整数拆分
本文解析LeetCode第343题"整数拆分",探讨如何将正整数拆分为至少两个数的和并使乘积最大化。提供了动态规划和数学方法两种解法,并给出C#、Python、C++三种实现代码。动态规划解法时间复杂度O(n^2),空间复杂度O(n);数学方法利用3的倍数特性,达到O(1)时空复杂度。文章包含详细的算法分析、性能对比和常见错误提示,适合想提升动态规划能力的开发者。数学方法虽高效但较难理解,动态规划更通用但效率略低。
2025-07-23 02:00:00
685
原创 LeetCode第342题_4的幂
本文解析LeetCode第342题"4的幂",提供了循环除法、位运算和数学三种解法。关键思路包括:循环不断除以4判断余数;利用位运算特性(4的幂是2的幂且1位于奇数位);通过数学性质(4的幂减1是3的倍数)。文章包含C#、Python、C++三种实现,比较了各解法的性能差异,位运算最优(O(1)时间复杂度)。适合初学者理解数学与位运算在算法中的应用,并附常见错误分析和相关题目推荐。
2025-07-23 01:00:00
1057
原创 LeetCode第341题_扁平化嵌套列表迭代器
本文解析LeetCode第341题"扁平化嵌套列表迭代器",提供两种解法:栈法和递归预处理法。栈法在构造时倒序压入元素,延迟处理嵌套列表;递归法则预先展开所有嵌套元素。文章包含C#、Python、C++三种代码实现,详细分析时间复杂度(构造O(n),操作均摊O(1))和空间复杂度O(n),并对比了各语言性能表现(C++最快12ms)。针对常见错误和使用场景给出了提示,推荐相关扩展题目,适合想提升迭代器设计能力的开发者阅读。
2025-07-22 02:00:00
649
原创 LeetCode第340题_至多包含K个不同字符的最长子串
文章摘要:LeetCode第340题要求找出字符串中包含最多K个不同字符的最长子串长度。本文提供滑动窗口+哈希表的解法,分析了时间复杂度O(n)和空间复杂度O(k),并给出C#、Python、C++三种实现,执行效率分别为76ms、52ms和8ms。文章包含详细解题思路、图解分析、常见错误提示及相似题目推荐,适合需要提升字符串处理能力的程序员学习。
2025-07-22 01:00:00
910
原创 LeetCode第339题_嵌套列表权重和
文章摘要: LeetCode第339题"嵌套列表权重和"考察深度优先搜索和广度优先搜索的应用。题目要求计算嵌套列表中所有整数的加权和,权重为其深度。文章提供了DFS和BFS两种解法,分别采用递归和队列实现,包含C#、Python、C++代码实现及性能对比。DFS时间复杂度O(n),空间复杂度O(d);BFS同样时间复杂度但空间复杂度可能更高。该题适合提升递归和树形结构处理能力,难度中等,推荐给具备基础数据结构知识的程序员。
2025-07-21 02:00:00
1236
原创 LeetCode第338题_比特位计数
文章摘要 LeetCode第338题"比特位计数"考察二进制表示和动态规划的结合应用。题目要求计算0到n每个整数的二进制中1的个数并返回数组。解析提供了两种高效解法:动态规划+最低有效位法(利用x>>1和x&1的关系递推)和动态规划+最高有效位法(利用最高位性质)。文章包含C#、Python、C++三种代码实现,性能对比显示C++实现最优(4ms),分析了动态规划的时间复杂度O(n)和空间复杂度O(1)。适合算法学习者练习位运算思维和动态规划应用。
2025-07-21 01:00:00
1044
原创 LeetCode第337题_打家劫舍III
本文解析LeetCode第337题"打家劫舍 III",这是一道中等难度的二叉树动态规划问题。题目要求在不触发警报(相邻节点不能同时被偷)的情况下,计算二叉树中能偷取的最大金额。文章提供了基于深度优先搜索和动态规划的解法,核心思路是对每个节点维护偷与不偷两种状态的最大值,通过后序遍历自底向上计算。代码实现了C#、Python、C++三种语言版本,执行时间分别为92ms、48ms和12ms。该解法时间复杂度O(n),空间复杂度O(h),适合想要提升动态规划能力的程序员学习。
2025-07-20 14:30:00
963
原创 LeetCode第336题_回文对
本文解析LeetCode第336题"回文对",提供了一种基于哈希表和字符串处理的解法。题目要求在给定单词列表中找出所有能拼接成回文串的索引对。文章包含详细解题思路、时间复杂度分析(O(n*k²))和代码实现(C#、Python)。关键点包括:哈希表存储单词索引、处理空字符串特殊情况、分割单词检查回文可能。通过示例图解说明算法流程,适合希望提升字符串处理能力的开发者。
2025-07-20 10:04:28
921
原创 LeetCode第335题_路径交叉
LeetCode 335:路径交叉问题解析 摘要:本文分析了LeetCode第335题"路径交叉"的数学解法,该题要求判断给定路径是否会自相交。文章通过归纳三种可能的交叉情况(i-3、i-4、i-5步交叉),提供了C#、Python、C++三种实现方案,并比较了它们的性能。解题关键在于数学分析和边界条件处理,时间复杂度O(n),空间复杂度O(1)。适合有一定算法基础,想提升几何问题解决能力的开发者学习。 关键词:路径交叉、几何算法、数学分析、边界判断、LeetCode
2025-07-19 02:00:00
1652
原创 LeetCode第334题_递增的三元子序列
文章摘要:本文详细解析LeetCode第334题"递增的三元子序列",提供贪心算法解法及C#、Python、C++三种实现。该算法通过维护最小值和次小值,在O(n)时间、O(1)空间内解决问题,适用于长度为3的递增子序列判断。文章包含详细算法分析、图解思路、代码实现、性能对比和常见错误分析,帮助读者掌握数组处理技巧。适合具备基础算法知识、希望提升贪心算法能力的程序员阅读。
2025-07-19 01:00:00
434
原创 LeetCode第333题_最大BST子树
LeetCode 333题解析:最大BST子树 这篇技术文章详细解析了LeetCode第333题"最大BST子树"的解题思路。题目要求找到二叉树中节点数最多的二叉搜索树(BST)子树。文章提供了三种编程语言实现(C#、Python、C++),采用自底向上的递归方法,通过维护子树信息来高效解决问题。关键点包括:定义辅助类存储子树状态、递归判断BST条件、更新最大子树大小。时间复杂度为O(n),空间复杂度为O(h)。文章包含示例分析、图解思路和性能对比,适合中级程序员提升二叉树算法能力。
2025-07-18 02:00:00
1293
原创 LeetCode第332题_重新安排行程
本文详细解析了LeetCode第332题"重新安排行程",这是一道中等难度的图论问题。文章提供了基于欧拉路径和深度优先搜索的解法,包含C#、Python、C++三种语言实现,并进行了详细的性能对比。 核心要点: 使用邻接表存储图结构 通过优先队列或排序确保字典序最小 采用DFS遍历欧拉路径 处理后反转结果得到正确顺序 适用场景: 需要解决机票行程规划等类似图遍历问题的开发者,能够帮助理解欧拉路径的实现和应用。三种语言的实现方式为不同技术栈的开发者提供了参考。
2025-07-18 01:00:00
1303
原创 LeetCode第331题_验证二叉树的前序序列化
验证二叉树前序序列化的两种解法 本文解析LeetCode 331题,提供两种高效解法: 1️⃣ 栈方法:模拟树的构建过程,通过栈操作合并完整子树。时间复杂度O(n),空间复杂度O(n)。 2️⃣ 计数法:利用入度出度特性,初始差值为1,非空节点提供2个出度,空节点消耗1个入度,最终差值应为0。时间复杂度O(n),空间复杂度O(1)。 代码亮点: 提供C#、Python、C++三种实现 包含边界条件检查 性能对比显示C++实现最优(0ms) 适用场景:需要验证二叉树前序序列化的正确性,或在O(1)空间复杂度下
2025-07-17 02:00:00
936
原创 LeetCode第330题_按要求补齐数组
LeetCode 330题解:贪心算法解决数组补丁问题 本文解析了LeetCode第330题"按要求补齐数组"的贪心解法。题目要求通过最少补丁使数组能表示1-n的所有数字。核心思路是维护当前可表示范围[1,miss),当数组元素无法覆盖miss时,补上miss本身以最大化扩展范围。提供了C#、Python、C++三种实现,时间复杂度O(n),空间复杂度O(1)。代码简洁高效,注意使用long防溢出。适合中高级算法学习者,可结合跳跃游戏等类似题目加深理解。
2025-07-17 01:00:00
499
原创 LeetCode第329题_矩阵中的最长递增路径
LeetCode 329题解析:矩阵中的最长递增路径问题,考察动态规划和记忆化DFS。文章提供两种解法:1) 记忆化DFS,通过深度优先搜索配合记忆数组避免重复计算;2) 动态规划,利用拓扑排序思想从出度为0的单元格开始更新。包含C#、Python、C++三种实现代码,时间复杂度均为O(mn)。适合算法基础扎实的程序员提升高级算法应用能力。
2025-07-16 02:00:00
407
原创 LeetCode第328题_奇偶链表
本文解析LeetCode第328题"奇偶链表",提供双指针解法及C#、Python、C++三种实现。该题要求将所有奇数位和偶数位的节点分别组合,保持相对顺序。双指针法时间复杂度O(n),空间复杂度O(1),是高效解法。文章包含详细步骤图解、代码亮点分析、常见错误提示及性能对比,适合想提升链表操作能力的程序员。附带相关题目推荐和互动交流提示,帮助读者系统学习链表操作。
2025-07-16 01:00:00
742
原创 LeetCode第327题_区间和的个数
摘要 LeetCode第327题"区间和的个数"是一道困难级别的前缀和与归并排序结合的问题。文章提供了两种解决方案:前缀和+归并排序和树状数组法,并给出C#、Python、C++三种语言的实现代码。主要考查如何利用前缀和优化区间统计,以及在归并排序中高效计算满足条件的区间数。题目要求统计数组中所有满足区间和在[lower,upper]范围内的子数组个数,时间复杂度需控制在O(nlogn)。适合有一定算法基础的开发者学习高级排序算法应用和优化技巧。
2025-07-15 02:00:00
404
原创 LeetCode第326题_3的幂
LeetCode第326题"3的幂"解析:本文提供了三种解法判断整数是否为3的幂。循环除法通过不断除以3判断最终是否为1;递归法采用递归结构处理;数学方法利用3^19=1162261467的特性直接判断。三种方法分别展示了不同思路,涵盖C#、Python、C++语言实现。文章包含详细的时间复杂度分析、代码示例和性能对比,特别适合算法初学者和想要提升数学思维的程序员。解题关键点在于正确处理边界情况(0和负数)以及整数性质的应用。
2025-07-15 01:00:00
448
原创 LeetCode第325题_和等于k的最长子数组长度
这篇文章详细解析了LeetCode第325题"和等于k的最长子数组长度",提供前缀和+哈希表的优化解法。内容包括题目描述、示例、解题思路(重点介绍前缀和与哈希表结合的方法)、代码实现(C#/Python/C++三种语言)、性能对比以及常见错误分析。通过图解和表格清晰展示了算法过程,并推荐了相关题目。适合想要提升数组和哈希表操作能力的程序员学习,时间复杂度O(n),空间复杂度O(n)。
2025-07-14 02:00:00
564
原创 LeetCode第324题_摆动排序II
本文解析LeetCode第324题"摆动排序 II",要求将数组重排为摆动序列。文章提供两种解法:排序+双指针(O(nlogn)时间)和三向切分(O(n)时间),包含C#、Python、C++代码实现和性能对比。重点分析避免相等元素相邻的处理技巧以及虚拟索引映射方法,适合需要提升数组操作能力的程序员。还列举了常见错误和相关题目,帮助巩固学习效果。通过图解和步骤分解,清晰展示解题思路。
2025-07-14 01:00:00
347
原创 LeetCode第323题_无向图中连通分量的数目
本文解析LeetCode第323题"无向图中连通分量的数目",提供了并查集和DFS两种解法,包含C#、Python、C++三种语言实现。并查集解法通过路径压缩优化查找操作,时间复杂度为O(N + MlogN);DFS解法构建邻接表遍历图,时间复杂度为O(N + M)。文章对比了两种解法的优缺点,并给出性能数据和常见错误分析,适合想要提升图论算法能力的程序员。
2025-07-13 02:00:00
475
虚函数c++语言
2018-05-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人