力扣算法题
文章平均质量分 91
编程星辰海
学完Java、C,后端框架,涉及过Python,大模型,前端,算法能力不强,正在疯狂练习中!比赛经验和项目经验丰富!欢迎交流!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode 3453:重叠正方形怎么等分?一行代码告诉你不需要去重
这道题初看是计算几何难题——正方形会重叠、要去重、要求精确等分。常规思路可能直奔扫描线+线段树,但本文揭示了一个关键洞察:水平线切割正方形得到的是简单矩形,面积直接求和即可,完全不需要去重。基于此,本文给出三种由浅入深的解法:浮点二分(20 行、O(n)、面试首选)、差分一次扫描(O(n log n)、性能最优)、整数二分(全程无浮点误差)。每种方法都配有逐行代码解释和 ASCII 图解,帮助你从"为什么要这样做"到"怎么实现"完整理解。掌握后,同类「二分答案 + 几何」的力扣难题都能迎刃而解。原创 2026-07-07 01:01:07 · 356 阅读 · 0 评论 -
力扣--1411. 给 N x 3 网格图涂色的方案数
本文分析了力扣上的nx3网格涂色问题,提出两种解决方案:1)DFS+记忆化搜索,通过状态压缩处理颜色约束;2)数学推导发现递推公式f(n)=5f(n-1)-2f(n-2)。文章详细解释了两种方法的实现原理,特别指出数学方法通过分析ABA/ABC两种行模式及其转移关系,最终推导出简洁高效的递推公式。对于n≤5000的大规模输入,推荐使用时间复杂度O(n)的递推解法,相比记忆化搜索更优。该问题展示了观察特殊规律对算法优化的重要性。原创 2026-01-03 20:40:53 · 1164 阅读 · 0 评论 -
力扣--1970. 你能穿过矩阵的最后一天(Java)
本文介绍了一个使用二分查找+BFS解决矩阵连通性问题的算法。题目给定一个初始为全陆地的矩阵,每天会有指定位置被水淹没,要求找出从顶部到底部仍能通过陆地通行的最后一天。算法通过二分查找确定可能的最大天数,对每个中间天数使用BFS检查是否存在从第一行到最后行的陆地路径。时间复杂度为O(logN)*O(MN),其中N为天数,M和N为矩阵行列数。文章还提到可用并查集逆序处理作为替代解法,但推荐优先掌握二分+BFS这种直观方法。原创 2025-12-31 17:06:27 · 829 阅读 · 0 评论 -
力扣--2402. 会议室 III(Java)
本文介绍了一个会议室调度问题的双堆解法。问题需要将多个会议按规则分配到n个会议室,考虑延期机制和优先级。核心思路是使用两个优先队列:一个管理空闲会议室(最小编号优先),一个记录正在使用的会议室(按结束时间排序)。算法通过时间驱动处理会议分配,当无空闲会议室时会议延期并调整时间。最终统计各会议室使用次数,返回使用最多且编号最小的会议室。示例代码展示了如何实现这一逻辑,包括会议排序、队列维护和时间调整等关键步骤。该解法高效处理了大规模会议调度问题。原创 2025-12-27 19:40:22 · 758 阅读 · 0 评论 -
力扣--2092. 找出知晓秘密的所有专家(Java)
本文解析力扣算法题《找出知晓秘密的所有专家》,采用按时间分组+图连通性传播的混合策略。初始专家0和firstPerson知道秘密,秘密通过会议传播。关键点是将会议按时间排序,同一时间的专家构成连通图,通过DFS传播秘密。算法高效处理了时间顺序和图连通性,确保正确传播。代码实现包括排序会议、构建时间分组图、DFS遍历传播秘密等步骤,最终返回所有知密专家列表。该方法巧妙结合事件驱动和图遍历思想,有效解决了秘密传播问题。原创 2025-12-19 23:53:14 · 938 阅读 · 0 评论 -
力扣--3562. 折扣价交易股票的最大利润(Java)
本文探讨了基于树形动态规划和分组背包的股票投资问题。给定公司员工层级关系和预算限制,每个员工股票有当前价和预期价,若上司购买则下属可享半价优惠。通过构建邻接表表示层级关系,使用DFS遍历树结构,结合背包算法计算不同预算下的最大利润。关键点在于处理父节点购买状态对子节点成本的影响,通过状态转移方程优化利润计算。算法时间复杂度与员工数量和预算规模相关,适用于类似LeetCode 2290等场景。原创 2025-12-17 19:45:33 · 1070 阅读 · 0 评论 -
力扣--262. 行程和用户(数据库题目)
这道SQL题要求计算2013-10-01至2013-10-03期间非禁止用户的行程取消率。关键点在于: 通过JOIN连接Trips和Users表两次,分别匹配乘客和司机 筛选未被禁止的用户(banned='No') 使用CASE WHEN统计取消订单数,除以总订单数 用ROUND函数保留两位小数 解决方案是:先过滤非禁止用户的行程,然后按日期分组,计算每个日期取消订单数与总订单数的比值。最终输出日期和对应的取消率,结果保留两位小数。原创 2025-12-15 16:56:08 · 896 阅读 · 0 评论 -
力扣--3433. 统计用户被提及情况
这道算法题要求统计用户被提及的次数。主要处理两种事件:消息事件(MESSAGE)和离线事件(OFFLINE)。消息事件有三种提及方式:直接@用户、@所有人(ALL)和@在线用户(HERE)。离线事件会使指定用户离线60个时间单位。解题思路是:1)遍历事件,记录离线/上线时间;2)对ALL消息直接累加计数;3)对HERE消息先累加再根据用户在线状态调整;4)最后统一加上ALL计数。关键点在于处理HERE消息时要考虑用户离线时间段,使用前缀和思想统计有效提及次数。原创 2025-12-12 12:38:28 · 687 阅读 · 0 评论 -
力扣--3578. 统计极差最大为 K 的分割方式数(Java实现,代码注释及题目分析讲解)
本文提出了一种解决数组分割问题的动态规划方法。给定整数数组nums和整数k,要求将数组分割成若干连续子数组,使得每个子数组的最大值与最小值之差不超过k,并返回满足条件的分割方式总数(对10^9+7取模)。算法采用滑动窗口和动态规划相结合的策略,使用TreeMap维护当前窗口内的元素,通过双指针调整窗口范围,同时利用前缀和数组优化计算效率。时间复杂度为O(n log n),适用于大规模数据。原创 2025-12-06 22:07:18 · 935 阅读 · 0 评论 -
力扣--3625. 统计梯形的数目 II 代码解析(Java,详解附注释附图)
本文介绍了计算二维平面中梯形数量的算法。通过哈希表统计线段斜率和截距,避免共线情况,并利用中点特性处理平行四边形重复计数问题。算法首先统计所有可能的梯形(包括平行四边形),然后减去多算的平行四边形数量。关键步骤包括:1) 计算线段斜率k和截距b;2) 编码线段中点;3) 使用嵌套哈希表高效统计。该方法有效解决了3623题的进阶版本,时间复杂度为O(n²)。代码采用Java实现,处理了-0.0等边界情况,通过偏移量确保坐标唯一编码。原创 2025-12-03 20:27:26 · 1117 阅读 · 0 评论
分享