每日一题
文章平均质量分 88
Ethan-D
欢迎来到我的技术博客!
我是一名热爱编程的程序员,专注分享实战经验与算法思维。
这里主要记录 LeetCode 刷题心得、系统设计解析、后端开发技巧、Python/Java 实用编程,以及面试八股与职场成长干货。
内容力求通俗易懂、逻辑清晰,从题目理解到思路剖析,再到代码实现,一步一步带你搞定难题。
无论你是准备面试的应届生、想提升算法能力的在职开发者,还是单纯喜欢敲代码的同好,都希望这里的内容能给你带来帮助和启发。
喜欢的话,欢迎关注、点赞、收藏,我们一起在代码的世界里不断精进!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
每日一题#16 后序遍历+深度计算
本文讲解LeetCode 865题(具有所有最深节点的最小子树)的解题思路。题目要求找到包含二叉树所有最深节点的最小子树的根节点(即这些节点的最近公共祖先)。核心解法采用后序遍历,通过比较左右子树深度来确定结果节点:若左右深度相等则当前节点为答案,否则选择深度更大的一侧继续查找。Python和Java代码均展示了这一递归过程,时间复杂度O(n),空间复杂度O(h)。文章强调后序遍历与深度比较的通用性,并推荐了类似题目供练习。原创 2026-01-09 09:34:30 · 622 阅读 · 0 评论 -
每日一题#15 动态规划
本文讲解LeetCode 1458题"两个子序列的最大点积"的解法。该问题要求在两个数组中找到长度相同的非空子序列,使其点积最大化。采用动态规划方法,定义dp[i][j]表示A[0..i]和B[0..j]子序列的最大点积。通过状态转移方程dp[i][j] = max(dp[i-1][j-1]+A[i]*B[j], dp[i-1][j], dp[i][j-1])递推求解。时间复杂度O(n^2),空间复杂度O(n^2),适用于数组长度n≤500的情况。文中提供了Python和Java实现代码原创 2026-01-08 10:24:59 · 740 阅读 · 0 评论 -
每日一题#14 二叉树后序遍历
本文讲解LeetCode 1339题“分裂二叉树的最大乘积”的解题思路。通过后序遍历计算整棵树的总和total,再次遍历时记录每个子树的和sub_sum,并计算sub_sum*(total-sub_sum)的最大值。核心在于让分裂后的子树和尽可能接近total/2,使乘积最大化。文章提供了Python和Java两种实现,均采用两次后序遍历的方式,时间复杂度O(n),空间复杂度O(h)。该题考察了二叉树遍历和子树和计算的经典应用,类似题目包括二叉树最大路径和等问题。原创 2026-01-07 13:59:13 · 565 阅读 · 0 评论 -
每日一题#13 二叉树层序遍历
本文讲解LeetCode 1161题"最大层内元素和",要求找出二叉树中和最大的层。解题采用BFS层序遍历:使用队列处理每层节点,统计每层和并与当前最大值比较,更新最大和及对应层号(和相同时取较小层)。提供Python和Java代码实现,核心是维护level_size控制每层处理。时间复杂度O(n),空间复杂度O(w)。该题是层序遍历模板题,掌握后能解决类似按层处理问题,如层序遍历、层平均值等。原创 2026-01-06 09:21:50 · 1009 阅读 · 0 评论 -
每日一题#12 数学观察 + 贪心
本文探讨了LeetCode中等难度题目1975. 最大方阵和的解法。题目要求在n×n矩阵(n为奇数)中,通过无限次相邻元素符号翻转操作,使矩阵元素和最大化。关键观察点在于:翻转操作不改变负号数量的奇偶性。解题思路分为三步:1)计算绝对值和、负号数及最小绝对值;2)若负号数为偶数,直接返回绝对值和;3)若为奇数,则减去两倍最小绝对值(保留一个负号)。代码实现简洁高效(O(n²)时间复杂度),展示了数学观察与贪心策略的结合。类似题目推荐进一步巩固该技巧。原创 2026-01-05 10:34:49 · 517 阅读 · 0 评论 -
每日一题#11 因数
本文分享了LeetCode 1390题"四因数"的解题思路。题目要求找出数组中所有恰好有4个因数的整数,并计算它们的因数之和。关键点在于:1) 快速判断因数个数是否为4;2) 优化因数枚举过程。通过数学分析,发现只需枚举2到sqrt(num)的范围,统计因数个数并累加和。当因数个数超过4时可提前终止,提升效率。文章提供了Python和Java两种实现,时间复杂度为O(n√max_num),空间复杂度O(1)。这道题考察了因数枚举技巧和优化能力,适合练习数学相关算法问题。原创 2026-01-04 11:11:13 · 933 阅读 · 0 评论 -
每日一题#10 数组+哈希表
本文讲解了LeetCode 961题"在长度2N的数组中找出重复N次的元素"的解题思路。题目要求在一个长度为2N的数组中找到重复出现N次的唯一元素。文章介绍了三种解法:1)使用哈希表计数;2)排序后检查相邻元素;3)优化版利用集合快速查找。提供了Python和Java的代码实现,重点分析了最优解(集合法)的时间复杂度O(N)和空间复杂度O(N)。最后总结强调这类简单题目中优化思路的重要性,建议刷题时多思考时间空间效率的提升方法。原创 2026-01-02 16:07:25 · 731 阅读 · 0 评论 -
每日一题#9 最长连续子数组 元旦快乐!
本文介绍了LeetCode 904题“水果成篮”的滑动窗口解法。题目要求找出包含最多两种不同数字的最长连续子数组长度。解题思路是通过维护一个滑动窗口和哈希表,动态调整窗口边界以保证水果种类不超过两种,同时记录最大窗口长度。文章提供了Python和Java的代码实现,并分析了时间复杂度和空间复杂度均为O(n)和O(1)。最后总结了滑动窗口的通用模板,并推荐了类似题目。作为2026年新年第一篇技术分享,作者鼓励读者持续学习,共同进步。原创 2026-01-01 09:00:00 · 973 阅读 · 0 评论 -
每日一题#8 二分答案 + BFS
本文分享了一道LeetCode Hard题目"1970. 你能穿过矩阵的最后一天"的解题思路。题目要求找到在矩阵被海水逐渐淹没过程中,从左上角到右下角能走通的最后一天。解题采用"二分答案+BFS"的方法:通过二分法确定天数范围,对每个中间天数用BFS检查路径连通性。时间复杂度为O(m×log m×(row+col)),空间复杂度O(row×col)。这道题是二分答案与图连通性判断的经典模板题,类似题型包括水位上升的泳池游泳等。文章提供了Python和Java代码实现,原创 2025-12-31 10:29:16 · 1090 阅读 · 0 评论 -
每日一题#7 双重遍历+条件判断
本文讲解如何检测矩阵中的3x3幻方子矩阵。幻方定义为包含1~9不重复数字,且每行、列、对角线之和均为15的子矩阵。解题采用暴力枚举法:遍历所有可能的3x3子矩阵,依次检查数字范围和重复性,验证行列和对角线和是否为15。Python和Java实现均通过双重循环定位子矩阵左上角,使用集合或数组标记数字,并进行多重条件判断。算法时间复杂度为O(rows*cols),空间复杂度O(1),适用于小规模矩阵(rows,cols≤10)。该题考察数组遍历和条件判断基础能力,适合巩固编程基本功。原创 2025-12-30 09:33:05 · 873 阅读 · 0 评论 -
每日一题#6 DFS+BFS
本文分享了一道有趣的LeetCode题目——756. 金字塔转换矩阵。题目要求根据给定的底层字符串和允许的积木规则列表,判断是否能搭建到金字塔顶层。解题思路采用DFS/BFS搜索方法,通过预处理规则优化查询效率。文章提供了Python和Java两种实现代码,分别采用DFS回溯和BFS迭代方式,并分析了时间复杂度和核心技巧。这道题考察了状态转移与搜索的结合能力,适合练习预处理优化和回溯算法。题目约束条件宽松(n≤8),暴力搜索即可高效解决。原创 2025-12-29 09:17:45 · 538 阅读 · 0 评论 -
每日一题#5 优先队列
LeetCode 2402是一道经典的模拟+优先队列题,考察了对会议调度问题的建模能力。通过维护空闲和忙碌房间的堆,我们能高效模拟分配过程,避免超时。Python和Java的实现类似,Java需注意long类型处理大时间值。这道题的难点在于处理延迟会议的逻辑,确保优先级正确。刷题时,多练习类似会议室/调度问题,能提升对堆的应用熟练度。欢迎大家在评论区讨论你的解法,如果有疑问随时问我!明天见,下一个“每日一题”继续~原创 2025-12-27 14:35:33 · 505 阅读 · 0 评论 -
每日一题#4 前缀和+动态规划
本文分享了LeetCode题目2483(商店的最早关门时间)的解法。题目要求在给定顾客访问记录字符串('Y'表示有顾客,'N'表示无顾客)时,找到一个最优关门时间j,使总罚金最小(罚金=开门时的'N'数+关门时的'Y'数)。解题思路是使用前缀和技巧:初始化right_y为总'Y'数,left_n为0,通过一次遍历计算各j对应的罚金,动态更新最小罚金及其对应j。提供了Python和Java代码实现,时间复杂度O(n),空间复杂度O(1)。该解法适用于类似分割点优化问题,推荐练习相关前缀和题目。原创 2025-12-26 10:11:18 · 835 阅读 · 0 评论 -
每日一题#3 圣诞特辑:用贪心给孩子们最大幸福
本文分享了一道LeetCode贪心算法题目——3075. 最大化所选孩子的幸福感。题目要求在k轮选择中,每轮选一个孩子后未被选孩子的幸福感减1(不低于0),求所选孩子幸福感总和的最大值。解题关键在于通过降序排序优先选择当前幸福感最高的孩子,使得大值被减次数最少。具体步骤为:1)对幸福感数组降序排序;2)累加前k个元素减去其索引的值(若结果非负)。Python和Java实现均采用排序+遍历的方式,时间复杂度O(n log n),空间复杂度O(1)。该题展示了贪心算法"局部最优→全局最优"的原创 2025-12-25 13:45:00 · 645 阅读 · 0 评论 -
每日一题#2 贪心算法
这道题虽然是 Easy,但完美考察了贪心算法的核心思想:在需要“最小数量覆盖最大资源”时,优先选择局部最优(最大容量)往往能得到全局最优。LeetCode 455. 分发饼干(Assign Cookies)LeetCode 135. 分发糖果(Candy)掌握这种“排序 + 贪心累加”的模板,能轻松秒杀很多贪心类问题。如果你在刷题过程中遇到类似题目,欢迎评论区交流!原创 2025-12-24 10:56:43 · 496 阅读 · 0 评论 -
每日一题#1 排序与二分查找
本文解决了一个最多选择两个不重叠活动以获得最大价值的问题。通过将活动按开始时间排序,利用二分查找快速定位不重叠活动,并预处理后缀最大值数组来优化计算。算法时间复杂度为O(nlogn),空间复杂度O(n),适用于大规模数据。示例验证和代码实现展示了该方法的正确性与高效性,适用于类似区间调度问题。原创 2025-12-23 16:19:12 · 895 阅读 · 0 评论
分享