自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 每日一题#22 二维前缀和 + 二分答案

本文讲解了一道经典算法题:求矩阵中元素和不超过阈值的最大正方形边长。解题采用二维前缀和+二分答案的方法:首先预处理二维前缀和数组实现O(1)子矩阵和查询;然后二分枚举可能的边长k,检查是否存在满足条件的k×k子矩阵。算法时间复杂度为O(mn log min(m,n)),空间复杂度O(mn),能高效处理300×300的矩阵。文中提供了Python代码实现,并分析了复杂度,还指出可进一步优化为O(mn)时间。这道题是前缀和与二分法的典型应用,掌握后能解决类似矩阵求和问题。

2026-01-19 10:50:08 921

原创 每日一题#21 二维 DP + 计数类

本文分享了一道经典动态规划题目——统计全为1的正方形子矩阵数量。题目要求统计二进制矩阵中全部由1组成的连续正方形子矩阵的数量。核心思路是定义dp[i][j]表示以(i,j)为右下角的最大全1正方形边长,状态转移方程为:当mat[i][j]=1时,dp[i][j] = min(左、上、左上) + 1,否则为0。最终答案为所有dp[i][j]之和。文章提供了Python和Java两种实现代码,并分析了时间复杂度和空间复杂度。掌握该模板可解决类似问题如最大正方形、统计全1子矩形等。

2026-01-16 10:11:06 965

原创 每日一题#20 连续段计数/连续相同元素

本文介绍了一道经典的连续段计数题目——2348. 全0子数组的数目。解题关键在于发现连续k个0的子数组数量遵循等差数列求和公式k×(k+1)/2。通过遍历数组并记录当前连续0的个数,可以高效计算出结果。文章提供了Python和Java的双版本代码实现,时间复杂度O(n),空间复杂度O(1)。这类问题具有通用解法,适用于其他连续相同元素的计数场景,如等差数列划分、最大连续1的个数等题目。

2026-01-15 13:51:06 811

原创 #每日一题19 回溯 + 全排列思想

LeetCode 679「24 点游戏」是一道经典的Hard回溯题目。给定4个1~9的整数,你需要使用+、-、×、÷四种运算符(可加括号、任意顺序),判断是否能恰好得到24。核心解法是暴力回溯:每次从当前数字列表中选两个数a和b,枚举6种运算(加、减×2、乘、除×2),将结果替换回列表,递归处理剩余数字,直到只剩1个数时判断是否≈24。搜索树规模约4!×4^3=几千次,时间完全可接受。

2026-01-14 09:21:43 1062

原创 每日一题#18 概率DP + 滑动窗口优化

本文详细解析了LeetCode 837题"新21点"的动态规划解法。题目要求计算爱丽丝在最优策略下获胜的概率,其中每次抽牌点数随机且游戏规则特殊。解题核心在于定义dp[i]为当前分数i时的获胜概率,并利用滑动窗口优化转移方程。通过从后向前递推和维护窗口和,将时间复杂度优化到O(n+maxPts)。文章包含示例解析、状态定义、转移方程推导、完整Python代码实现及复杂度分析,并总结了边界情况和类似题目推荐。这道题是概率DP与滑动窗口结合的经典案例,适合深入理解动态规划优化技巧。

2026-01-13 10:44:15 864

原创 每日一题#17 坐标系移动 + Chebyshev距离

本文讲解LeetCode 1266题「访问所有点的最小时间」的解题思路。题目要求在二维平面上依次访问所有点,每次可以水平、垂直或对角线移动1个单位,求最少耗时。核心解法是利用棋盘距离(Chebyshev距离):两点间最短时间等于x和y方向差值的较大者。通过遍历相邻点对并累加各段max(dx,dy)即可得到答案。Python和Java代码实现简洁高效,时间复杂度O(n)。文章强调该公式适用于棋盘移动类问题,并推荐类似题目加深理解。

2026-01-12 13:53:47 890

原创 每日一题#16 后序遍历+深度计算

本文讲解LeetCode 865题(具有所有最深节点的最小子树)的解题思路。题目要求找到包含二叉树所有最深节点的最小子树的根节点(即这些节点的最近公共祖先)。核心解法采用后序遍历,通过比较左右子树深度来确定结果节点:若左右深度相等则当前节点为答案,否则选择深度更大的一侧继续查找。Python和Java代码均展示了这一递归过程,时间复杂度O(n),空间复杂度O(h)。文章强调后序遍历与深度比较的通用性,并推荐了类似题目供练习。

2026-01-09 09:34:30 901

原创 每日一题#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 1141

原创 每日一题#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 735

原创 每日一题#13 二叉树层序遍历

本文讲解LeetCode 1161题"最大层内元素和",要求找出二叉树中和最大的层。解题采用BFS层序遍历:使用队列处理每层节点,统计每层和并与当前最大值比较,更新最大和及对应层号(和相同时取较小层)。提供Python和Java代码实现,核心是维护level_size控制每层处理。时间复杂度O(n),空间复杂度O(w)。该题是层序遍历模板题,掌握后能解决类似按层处理问题,如层序遍历、层平均值等。

2026-01-06 09:21:50 1076

原创 每日一题#12 数学观察 + 贪心

本文探讨了LeetCode中等难度题目1975. 最大方阵和的解法。题目要求在n×n矩阵(n为奇数)中,通过无限次相邻元素符号翻转操作,使矩阵元素和最大化。关键观察点在于:翻转操作不改变负号数量的奇偶性。解题思路分为三步:1)计算绝对值和、负号数及最小绝对值;2)若负号数为偶数,直接返回绝对值和;3)若为奇数,则减去两倍最小绝对值(保留一个负号)。代码实现简洁高效(O(n²)时间复杂度),展示了数学观察与贪心策略的结合。类似题目推荐进一步巩固该技巧。

2026-01-05 10:34:49 570

原创 每日一题#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 1038

原创 每日一题#10 数组+哈希表

本文讲解了LeetCode 961题"在长度2N的数组中找出重复N次的元素"的解题思路。题目要求在一个长度为2N的数组中找到重复出现N次的唯一元素。文章介绍了三种解法:1)使用哈希表计数;2)排序后检查相邻元素;3)优化版利用集合快速查找。提供了Python和Java的代码实现,重点分析了最优解(集合法)的时间复杂度O(N)和空间复杂度O(N)。最后总结强调这类简单题目中优化思路的重要性,建议刷题时多思考时间空间效率的提升方法。

2026-01-02 16:07:25 802

原创 每日一题#9 最长连续子数组 元旦快乐!

本文介绍了LeetCode 904题“水果成篮”的滑动窗口解法。题目要求找出包含最多两种不同数字的最长连续子数组长度。解题思路是通过维护一个滑动窗口和哈希表,动态调整窗口边界以保证水果种类不超过两种,同时记录最大窗口长度。文章提供了Python和Java的代码实现,并分析了时间复杂度和空间复杂度均为O(n)和O(1)。最后总结了滑动窗口的通用模板,并推荐了类似题目。作为2026年新年第一篇技术分享,作者鼓励读者持续学习,共同进步。

2026-01-01 09:00:00 1025

原创 每日一题#8 二分答案 + BFS

本文分享了一道LeetCode Hard题目"1970. 你能穿过矩阵的最后一天"的解题思路。题目要求找到在矩阵被海水逐渐淹没过程中,从左上角到右下角能走通的最后一天。解题采用"二分答案+BFS"的方法:通过二分法确定天数范围,对每个中间天数用BFS检查路径连通性。时间复杂度为O(m×log m×(row+col)),空间复杂度O(row×col)。这道题是二分答案与图连通性判断的经典模板题,类似题型包括水位上升的泳池游泳等。文章提供了Python和Java代码实现,

2025-12-31 10:29:16 1150

原创 每日一题#7 双重遍历+条件判断

本文讲解如何检测矩阵中的3x3幻方子矩阵。幻方定义为包含1~9不重复数字,且每行、列、对角线之和均为15的子矩阵。解题采用暴力枚举法:遍历所有可能的3x3子矩阵,依次检查数字范围和重复性,验证行列和对角线和是否为15。Python和Java实现均通过双重循环定位子矩阵左上角,使用集合或数组标记数字,并进行多重条件判断。算法时间复杂度为O(rows*cols),空间复杂度O(1),适用于小规模矩阵(rows,cols≤10)。该题考察数组遍历和条件判断基础能力,适合巩固编程基本功。

2025-12-30 09:33:05 923

原创 每日一题#6 DFS+BFS

本文分享了一道有趣的LeetCode题目——756. 金字塔转换矩阵。题目要求根据给定的底层字符串和允许的积木规则列表,判断是否能搭建到金字塔顶层。解题思路采用DFS/BFS搜索方法,通过预处理规则优化查询效率。文章提供了Python和Java两种实现代码,分别采用DFS回溯和BFS迭代方式,并分析了时间复杂度和核心技巧。这道题考察了状态转移与搜索的结合能力,适合练习预处理优化和回溯算法。题目约束条件宽松(n≤8),暴力搜索即可高效解决。

2025-12-29 09:17:45 592

原创 每日一题#5 优先队列

LeetCode 2402是一道经典的模拟+优先队列题,考察了对会议调度问题的建模能力。通过维护空闲和忙碌房间的堆,我们能高效模拟分配过程,避免超时。Python和Java的实现类似,Java需注意long类型处理大时间值。这道题的难点在于处理延迟会议的逻辑,确保优先级正确。刷题时,多练习类似会议室/调度问题,能提升对堆的应用熟练度。欢迎大家在评论区讨论你的解法,如果有疑问随时问我!明天见,下一个“每日一题”继续~

2025-12-27 14:35:33 563

原创 每日一题#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 951

原创 每日一题#3 圣诞特辑:用贪心给孩子们最大幸福

本文分享了一道LeetCode贪心算法题目——3075. 最大化所选孩子的幸福感。题目要求在k轮选择中,每轮选一个孩子后未被选孩子的幸福感减1(不低于0),求所选孩子幸福感总和的最大值。解题关键在于通过降序排序优先选择当前幸福感最高的孩子,使得大值被减次数最少。具体步骤为:1)对幸福感数组降序排序;2)累加前k个元素减去其索引的值(若结果非负)。Python和Java实现均采用排序+遍历的方式,时间复杂度O(n log n),空间复杂度O(1)。该题展示了贪心算法"局部最优→全局最优"的

2025-12-25 13:45:00 719

原创 每日一题#2 贪心算法

这道题虽然是 Easy,但完美考察了贪心算法的核心思想:在需要“最小数量覆盖最大资源”时,优先选择局部最优(最大容量)往往能得到全局最优。LeetCode 455. 分发饼干(Assign Cookies)LeetCode 135. 分发糖果(Candy)掌握这种“排序 + 贪心累加”的模板,能轻松秒杀很多贪心类问题。如果你在刷题过程中遇到类似题目,欢迎评论区交流!

2025-12-24 10:56:43 648

原创 每日一题#1 排序与二分查找

本文解决了一个最多选择两个不重叠活动以获得最大价值的问题。通过将活动按开始时间排序,利用二分查找快速定位不重叠活动,并预处理后缀最大值数组来优化计算。算法时间复杂度为O(nlogn),空间复杂度O(n),适用于大规模数据。示例验证和代码实现展示了该方法的正确性与高效性,适用于类似区间调度问题。

2025-12-23 16:19:12 1020

空空如也

空空如也

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

TA关注的人

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