算法
文章平均质量分 93
练习java的算法能力
beordie.cloud
傻傻呆呆,没有脑袋
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode 41. 缺失的第一个正数 | 原地哈希最优解全解析
摘要: 「缺失的第一个正数」问题要求在O(n)时间、O(1)空间内,通过原地哈希将数组本身转化为哈希表。核心思路是让正整数x占据索引x-1的位置,通过交换实现原地存储。最终遍历数组,首个不满足nums[i]=i+1的索引i+1即为答案。该方法避免了额外空间,典型场景包括数据校验和快速定位缺失值。从暴力解法(O(n²))到哈希优化(O(n)空间),最终演进出最优的原地哈希方案,完美符合题目限制条件。原创 2025-12-13 22:01:51 · 922 阅读 · 0 评论 -
LeetCode 238. 除自身以外数组的乘积 | 前缀后缀优化全解析
本文探讨了「除自身以外数组的乘积」问题的解法优化路径。首先分析暴力解法(O(n²)时间)的不足,提出通过前缀/后缀乘积数组(O(n)时间/空间)来避免重复计算。最终给出最优解法:利用输出数组存储前缀积,配合临时变量计算后缀积,实现O(n)时间复杂度和O(1)额外空间复杂度(输出数组除外)。文章通过具体示例和代码实现,展示了如何逐步优化该问题的解决方案。原创 2025-12-11 23:12:44 · 593 阅读 · 0 评论 -
LeetCode 56. 合并区间 | 排序 + 贪心最优解全拆解
摘要: 「合并区间」问题考察排序与贪心策略的结合,通过合并重叠或相邻区间返回不重叠结果。暴力解法(两两比对)效率低(O(n²)),优化解法先按起始值排序(O(n log n)),再单次遍历合并(O(n)),显著提升效率。适用于日程冲突检测等场景。示例:输入 [[1,3],[2,6]] 输出 [[1,6]],核心步骤为排序后比较相邻区间边界,动态更新合并结果。原创 2025-12-10 23:05:10 · 1023 阅读 · 0 评论 -
LeetCode 1. 两数之和 | 从暴力到哈希表的优化之路
摘要:LeetCode经典入门题「两数之和」通过暴力解法和哈希表优化两种方案,展示了算法优化的核心思维。暴力解法采用双重循环遍历所有组合,时间复杂度O(n²);而优化方案利用哈希表存储已遍历元素,将查找时间降至O(1),实现O(n)时间复杂度。该题体现了「空间换时间」的优化策略,是理解数组遍历和哈希表应用的典型案例。掌握这一思路后,可进一步挑战三数之和、四数之和等进阶题目。原创 2025-12-09 23:08:53 · 782 阅读 · 0 评论 -
LeetCode 3. 无重复字符的最长子串 | 滑动窗口+哈希表最优解拆解
本文介绍了LeetCode经典题目「无重复字符的最长子串」的三种解法:暴力枚举法(O(n²))、基础滑动窗口(O(n))和优化滑动窗口(哈希表优化)。通过图文示例和代码实现,详细解析了如何从双重循环逐步优化到O(n)时间复杂度的最优解,重点讲解了滑动窗口的核心逻辑和边界处理。该题目是学习字符串处理和算法优化的典型案例,实际开发中常用于去重和子串匹配场景。原创 2025-12-08 23:16:11 · 1114 阅读 · 0 评论 -
字符串算法面试通关宝典:从基础到进阶,搞定高频考点
双指针模板(反转、回文判断)。滑动窗口模板(子串问题通用框架)。KMP 算法模板(LPS 数组 + 匹配逻辑)。动态规划模板(字符串类 DP 状态定义通用思路)。理解底层存储特性,规避不可变性带来的性能问题。熟练运用双指针、滑动窗口等技巧,将复杂问题拆解为线性遍历。针对不同场景选择最优算法(如子串问题用滑动窗口,子序列问题用动态规划)。结合语言特性优化实现(如 Go 中的 rune、strings.Builder)。转载 2025-11-16 18:52:02 · 28 阅读 · 0 评论
分享