- 博客(48)
- 收藏
- 关注
原创 LeetCode 每日一题笔记 日期:2025.03.25 题目:3546.等和矩阵分割
总和判断 + 行/列前缀和验证;关键技巧:利用正整数单调性,只需一次顺序遍历即可判断可分割性;适用场景:单条水平/垂直线分割、两部分非空、和相等的矩阵判定问题。
2026-03-25 20:50:07
263
原创 LeetCode 每日一题笔记 日期:2025.03.24 题目:2906.构造乘积矩阵
暴力求解不可行的原因:时间复杂度为On×m2O((n×m)^2)O((n×m2,矩阵规模较大时会超时,且多次乘法易导致数值溢出;核心优化思路:利用「前缀/后缀乘积」将时间复杂度降至线性,通过展平二维矩阵简化计算逻辑;关键细节:每一步乘法后取模避免溢出,边界位置单独处理防止数组越界。
2026-03-24 11:27:08
377
原创 苍穹外卖Day08笔记
把「内网本地项目」暴露成「公网可访问地址」微信支付流程:下单→统一下单API→prepay_id→本地签名→前端支付→微信公网回调→验签改单→返回成功加密体系:签名防篡改、公私钥加密数据、证书用于退款鉴权IP区别:内网外网不通,微信访问不了本机内网穿透:打通外网到本地的通道cpolar:一键生成公网域名,只为本地调试微信支付回调而生,开发必备、上线不用。
2026-03-23 19:35:04
288
原创 LeetCode 每日一题笔记 日期:2025.03.23 题目:1594.矩阵的最大非负积
核心思路是双DP数组(max/min)+ 动态规划:因负数存在,最小值可能转化为最大值,需同时维护最大/最小乘积;关键技巧:路径仅来自上/左方,通过递推计算每个位置的max/min乘积,避免枚举所有路径;优化方向:一维DP数组可大幅降低空间开销,是该问题的最优空间方案。
2026-03-23 18:51:42
351
原创 LeetCode 每日一题笔记 日期:2025.03.22 题目:1886.判断矩阵经轮转后是否一致
核心思路是模拟旋转 + 逐次校验:利用矩阵旋转规律模拟90度顺时针旋转,检查4种旋转状态是否匹配target;关键技巧:正方形矩阵顺时针旋转90度可通过“转置+反转每行”实现,且最多旋转4次必回原状态;优化方向:避免修改原矩阵提升代码鲁棒性,直接计算旋转后位置简化旋转逻辑。
2026-03-23 18:48:27
397
原创 LeetCode 每日一题笔记 日期:2025.03.21 题目:3643.垂直翻转子矩阵
核心思路是双指针原地交换:利用 top/bottom 指针交换子矩阵的上下行,实现垂直翻转,无需额外空间;关键技巧:明确子矩阵的行/列边界(xx+k-1、yy+k-1),仅处理该范围内的元素;该方法时间和空间复杂度均最优,适合处理任意大小的合法输入矩阵。
2026-03-21 15:56:46
365
原创 苍穹外卖Day07笔记
本质:将与业务无关但需全局统一执行的逻辑(如日志、权限、事务),从业务代码中抽离出来,通过「切面」统一管理,实现「横切逻辑」与业务逻辑解耦;通俗理解:在不修改原有业务代码的前提下,为方法添加「增强功能」(如执行方法前校验权限、执行后记录日志)。
2026-03-20 21:28:45
305
原创 LeetCode 每日一题笔记 2025.03.20 3567.子矩阵的最小绝对差
核心思路是暴力枚举 + 排序求最小相邻差:通过枚举所有 k×k 子矩阵,利用“排序后相邻元素最小差”的特性简化计算;关键技巧:无需计算所有元素两两差值,仅需计算排序后相邻元素的差值,大幅减少计算量;优化方向:替换流式排序提升性能,或通过滑动窗口+有序集合优化大矩阵场景下的时间复杂度。
2026-03-20 10:32:37
351
原创 苍穹外卖Day04笔记
保证数据一致性,@AutoFill简化公共字段赋值;MyBatis 核心:XML属性需根据操作类型(增/查)合理配置,分页依赖PageHelper自动拦截SQL;框架层面:SSM是基础框架组合,SpringBoot是其简化版,核心是自动配置和快速开发。
2026-03-19 17:27:21
427
原创 LeetCode 每日一题笔记 日期:2025.03.19 题目:3212.统计X和Y频数相等的子矩阵数量
核心思路是二维前缀和 + 状态标记:将 X/Y 转换为数值差值,通过前缀和快速计算子矩阵的X-Y数量差,结合hasX标记筛选有效子矩阵;关键技巧:把“X和Y数量相等”转化为“差值和为0”的数学问题,简化统计逻辑;优化方向:融合遍历逻辑减少循环次数,或通过空间换时间的思路降低空间复杂度,可根据实际场景选择。
2026-03-19 11:29:54
398
原创 LeetCode 每日一题笔记 日期:2025.03.18 题目:3070.元素和小于等于k的子矩阵的数目
核心思路是二维前缀和:通过预处理前缀和数组,将任意子矩阵的和计算从 (O(m \times n)) 降为 (O(1)),高效统计符合条件的子矩阵;关键技巧:利用“子矩阵必须包含左上角”的特性,只需遍历所有以 (0,0) 为左上角的子矩阵,无需枚举所有可能的子矩阵;优化方向:非负矩阵可提前终止同一行的遍历,进一步减少计算量;空间敏感场景可直接修改原矩阵节省空间。
2026-03-19 11:29:16
342
原创 苍穹外卖Day06笔记
build()是 Lombok@Builder注解的产物,用于简化对象创建;微信小程序登录核心是wx.login()获取 code → 后端调用微信接口换 openid;前端通过发起请求,Nginx 可统一转发前端静态资源和后端接口;FastJSON 核心是(JSON转对象)和(对象转JSON);@Option主要用于命令行参数解析,非Java/Spring原生注解。
2026-03-18 22:31:43
366
原创 苍穹外卖Day05笔记
Redis 核心优势是高性能、丰富数据结构,适配缓存/限流/排行榜等场景,不适合海量存储和强事务;MySQL 核心优势是强事务、复杂查询、低成本存储,适配核心业务数据存储,性能是短板;实际开发中二者协同,Redis 解决性能问题,MySQL 解决数据存储和业务逻辑问题。
2026-03-17 17:03:39
376
原创 苍穹外卖Day03笔记
自定义注解是 Java 元编程的核心,常用于 AOP 切面拦截、参数校验、自动填充等场景(如 MyBatis 字段自动填充创建时间/修改人)。// 自定义自动填充注解@Target(ElementType.METHOD) // 注解作用在方法上@Retention(RetentionPolicy.RUNTIME) // 运行时保留,可通过反射获取// 注解属性:填充类型(如INSERT/UPDATE)// 枚举:填充操作类型注解 + 反射 + AOP。
2026-03-08 14:46:50
388
原创 苍穹外卖Day02笔记
异常处理:用全局捕获,解决数据约束违规问题;线程与存储:Tomcat多线程处理请求,ThreadLocal实现线程隔离存储上下文数据;数据库操作:PageHelper简化分页,WHERE子句过滤查询数据;请求处理:POST新增、PUT全量更新,接收JSON格式请求体。
2026-03-03 20:37:12
307
原创 苍穹外卖Day01笔记
JWT(JSON Web Token)是轻量级的身份认证令牌,本质是一段加密的JSON字符串,用于“前后端/服务间身份校验”。接口是前端与后端、服务与服务之间的“通信约定”前端调用(登录接口);按约定传usernamepassword参数,后端按约定返回“登录成功/失败”结果。.xml(复杂结构)、(简单键值对)、.yml(Spring Boot主流);MyBatis:获取SQL分“注解式(@Select/@Param)”和“XML式”,前者适简单SQL,后者适复杂SQL;
2026-03-02 22:04:30
574
原创 LeetCode 每日一题笔记 日期:2025.12.17 题目:3573.买卖股票的最佳时机Ⅴ
本题是“带做空机制的有限次数股票交易”问题,核心是拆分持仓状态+动态规划状态转移明确“平仓算交易次数,开仓不算”的规则;区分做多/做空两种持仓状态的转移逻辑;最终结果仅考虑无持仓状态(持仓未平仓无实际利润)。
2025-12-17 17:46:22
519
原创 LeetCode 每日一题笔记 日期:2025.12.15 题目:2110.股票平滑下跌阶段的数目
本题的核心是识别「连续平滑下降序列」的贡献规律,无论是直接计算连续段的额外贡献,还是用动态规划累加每个位置的阶段数,本质都是对「1+2+…+(k-1)」这一数学规律的应用。
2025-12-15 17:27:07
933
原创 LeetCode 每日一题笔记 日期:2025.12.14 题目:2147.分隔长廊的方案数
本题的核心是将「分段恰好含 2 个座位」的问题转化为「统计组间可选屏风数的乘积」,关键在于发现「方案数 = 各组间可选位置数的乘积」这一数学规律,同时需注意数值溢出问题(用 long 存储中间结果、过程中取余)。
2025-12-14 20:31:54
1042
原创 LeetCode 每日一题笔记 日期:2025.12.02 题目:3623. 统计梯形的数目 I
本题的核心是组合数学 + 哈希表分组,通过将问题转化为“不同 y 组合数的两两乘积和”,利用数学公式或累加技巧避免双重循环,实现高效计算。官方题解的累加方式更简洁易写,而公式法更偏数学推导,两者时间复杂度一致。
2025-12-02 20:37:05
627
原创 LeetCode 每日一题笔记 日期:2025.12.01 题目:2141.同时运行 N 台电脑的最长时间
核心思路是二分查找 + 贪心验证:通过二分缩小运行时间的候选范围,用贪心计算电池有效贡献来验证可行性;关键技巧是利用“每个电池最多贡献T分钟”的贪心策略,快速判断候选时间是否可行;该方法高效解决了“最大化同时运行时间”的问题,避免了暴力枚举的高时间复杂度。
2025-12-01 19:38:25
588
1
原创 LeetCode 每日一题笔记 日期:2025.11.30 题目:1590.使数组和能被 P 整除
核心思路是利用前缀和取模将问题转化为“余数匹配”,再通过哈希表快速定位满足条件的子数组;初始版本的问题在于前缀和未取模、子数组长度计算逻辑混乱、嵌套循环效率低;优化后的官方题解通过哈希表记录余数下标,将时间复杂度从On2O(n^2)On2降至OnO(n)On,是该问题的最优解法之一。
2025-12-01 17:32:04
437
原创 LeetCode 每日一题笔记 日期:2025.11.27 题目:3381.长度可被 K 整除的子数组的最大元素和
本题核心是前缀和 + 余数配对,利用数学性质将“长度可被k整除”转化为“余数相同”,避免暴力枚举所有子数组(暴力法时间复杂度O(n²)关键技巧是记录每个余数的最小前缀和,确保能得到最大的子数组和差值。该思路可推广到“子数组长度满足特定模条件”的同类问题,如“子数组和能被k整除”“子数组长度为k的倍数”等场景。
2025-11-27 19:59:46
466
原创 LeetCode 每日一题笔记 日期:2025.11.25 题目:1015. 可被 K 整除的最小整数
本题的核心是利用「余数递推」避免存储大数,同时通过数学性质(2/5 倍数无解)简化逻辑,本质是数学规律与循环遍历的结合。
2025-11-25 19:33:51
932
原创 LeetCode 每日一题笔记 日期:2025.11.24 题目:1018. 可被5整除的二进制前缀
本题的核心是利用模运算性质规避数值溢出,这是处理“大数取模”类问题的常用技巧;关键思路:无需计算完整的二进制数,只需通过前一个状态的模结果推导当前状态,既高效又安全;延伸思考:类似问题(如“可被 3 整除的二进制前缀”“可被 7 整除的前缀”)均可复用此思路,只需将模运算的除数替换为对应数值;注意细节:二进制数的进位逻辑(左移 ×2 加新位)是推导公式的基础,需准确理解前缀的数值变化规律。
2025-11-24 19:51:56
981
原创 Vue 项目框架结构详解
Vue 项目结构的核心设计思想是“分层、分职责、高内聚、低耦合”目录/文件核心职责定位根目录文件项目配置、工程化管理(依赖、构建、Git)全局配置层应用启动、全局依赖初始化入口层全局布局、根组件容器布局层公共可复用组件组件层src/assets静态资源(图片、样式)资源层routerstore路由管理、全局状态共享核心能力层views页面级组件、业务模块拆分业务页面层utilsapi工具函数、接口请求封装工具支撑层。
2025-11-23 20:43:25
1230
原创 LeetCode 每日一题笔记 日期:2025.11.23 题目:1262.可被三整除的最大和
贪心思想:以“数组总和”为基础,通过移除最小代价(最小元素或最小元素组合)使总和能被 3 整除,保证剩余和最大;分类讨论:根据总和模 3 的结果,针对性处理两种可能的移除方案,确保覆盖所有情况。
2025-11-23 19:38:49
954
原创 LeetCode 每日一题笔记 日期:2025.11.19 题目:2154.将找到的值乘以2
本题的核心是「倍数序列的存在性判断」,关键在于高效验证每个倍数是否在数组中,避免冗余计算。原代码通过「提前生成倍数序列+标记存在元素」的思路解题,逻辑可行但存在效率和严谨性问题,适合理解基础的数组操作和序列生成逻辑。此类题目常考察「哈希表的应用」「序列生成逻辑」「时间复杂度优化」,需掌握哈希表的基本操作(增、查)。遇到「存在性判断」「去重」「快速查询」场景,优先考虑哈希表(HashSet/HashMap)。
2025-11-19 20:08:27
864
原创 Arrays.sort() 与 Collections.sort() 深度解析(全维度对比+底层原理)
本文深入解析了Java中Arrays.sort()和Collections.sort()的核心差异与底层原理。主要内容包括: 核心定位:Arrays.sort()用于数组排序,支持基本类型和对象数组;Collections.sort()专用于List集合排序,底层封装数组排序逻辑。 使用场景:前者直接对数组排序,后者对集合排序。对象排序时都支持自然排序(Comparable)和自定义排序(Comparator)。 底层原理:JDK7+统一采用TimSort算法(归并+插入排序混合),时间复杂度O(n log
2025-11-19 18:49:44
1067
原创 @Builder注解完全详解(Lombok 核心注解)
默认 Builder 入口是,可通过@Data@Builder(builderMethodName = "create") // 自定义入口方法为 create()User user = User.create() // 替代 User.builder().age(28).build();@Builder是 Lombok 的核心注解,非 Spring 注解,核心作用是生成建造者模式代码;核心优势:链式调用、属性顺序自由、代码简洁、可读性强;,覆盖大部分实体类场景;
2025-11-18 19:51:24
551
原创 LeetCode 每日一题笔记 日期:2025.11.18 题目:717. 1比特与2比特字符
本题的核心是抓住“解码规则的唯一性”,无需复杂的数据结构,基于贪心思想遍历即可解决——遇到1必须跳两步,遇到0只能跳一步,通过索引位置判断最终结果;代码优化的核心是“去除冗余、贴合逻辑”:删除无效判断和中间变量,让代码直接映射解题思路,既提升可读性,也减少潜在的逻辑漏洞;
2025-11-18 18:40:18
586
原创 LeetCode 每日一题笔记 日期:2025.11.17 题目:1437.是否所有1都至少相隔k个元素
本题的核心是通过记录上一个1的位置,线性遍历判断所有1之间的距离。算法逻辑清晰,时间和空间复杂度均为最优,是典型的“贪心”思路在数组问题中的应用——每次遇到1就立即判断是否满足条件,一旦不满足直接返回结果,避免了不必要的计算。这类“相邻元素约束”的问题,通常都可以通过记录前一个满足条件的位置来线性解决,是数组类题目中的常见解题范式。
2025-11-17 19:35:48
342
原创 LeetCode 每日一题笔记 日期:2025.11.16 题目:1513.仅含1的子串数
本题的核心是利用数学规律(连续k个 ‘1’ 可组成 (k \times (k + 1) / 2) 个子串),将问题转化为统计每段连续 ‘1’ 的长度并累加其贡献。需要注意的是,由于结果可能很大,必须在计算过程中对 (10^9 + 7) 取模,并通过long类型避免中间结果溢出,确保最终结果的正确性。
2025-11-16 19:20:23
316
原创 LeetCode 每日一题笔记 日期:2025.11.14 题目:2536.子矩阵元素加1
本题是二维差分矩阵的经典应用,核心思路是“差分标记+前缀和还原”,通过将区间更新转化为点操作,彻底解决了暴力解法的超时问题。代码设计巧妙,下标转换和矩阵大小设计避免了边界判断,原地前缀和优化了空间效率。该解法不仅适用于“区间加1”,还可推广到“区间加任意常数k”(仅需将差分更新时的++和--改为+=k和-=k),是处理矩阵区间更新问题的通用最优思路。掌握二维差分矩阵的核心逻辑,可高效解决各类矩阵区间增减、多查询更新等问题。
2025-11-14 17:53:35
469
原创 LeetCode 每日一题笔记 日期:2025.11.13 题目:3228.将1移动到末尾的最大操作次数
本题通过贪心策略+从右往左遍历的思路,利用“右侧'1'数量决定操作次数”的规律,高效统计最大操作次数。核心在于理解每次操作的触发条件与右侧'1'数量的关联,避免模拟实际移动过程,从而将时间复杂度优化至线性级别,是典型的“通过规律推导替代暴力模拟”的算法题思路。
2025-11-13 20:27:29
315
原创 LeetCode 每日一题笔记 日期:2025.11.12 题目:2654. 使数组所有元素变成1的最少操作次数
本题的核心是利用最大公约数(GCD)的性质和贪心策略存在1时,直接计算扩散操作次数;整体GCD>1时,直接返回-1;无1但整体GCD=1时,先找最短GCD为1的子数组生成1,再扩散到全数组。通过“先判断特殊情况,再处理一般情况”的思路,结合GCD的迭代计算和子数组枚举,可高效得到最少操作次数。该题体现了数学性质在算法题中的关键作用,以及贪心策略对“最小操作次数”类问题的适配性。
2025-11-12 18:35:03
948
原创 LeetCode 每日一题笔记 日期:2025.11.10 3542. 将所有元素变为0的最少操作次数
初始思路(TreeSet):通过分层处理数值,明确每个层级的连续段操作,逻辑直观但效率较低,适合理解题目本质;优化思路(单调栈):提炼题目核心规律,用单调栈维护「操作层级」,避免重复遍历和无效操作,实现线性时间复杂度,是最优解法。
2025-11-10 20:34:42
644
原创 LeetCode 每日一题笔记 日期:2025.11.04 题目:3318.计算子数组的x-sum
本题的核心是对每个子数组进行“次数统计 + 排序筛选 + 求和”的流程。该解法逻辑直观、易于理解,适合题目数据规模不大的场景。
2025-11-05 19:18:00
920
原创 LeetCode 每日一题笔记 日期:2025.11.03
本题的核心是「贪心算法」的应用——通过「局部最优选择」实现「全局最优解」。每次仅在相邻两个相同颜色气球中,移除耗时更小的那个,最终所有连续相同组都会保留耗时最大的气球,总移除时间自然最小。该解法的优势在于逻辑极简、效率拉满,避免了复杂的数据结构和嵌套逻辑,是本题的最优实现方式。解题关键在于看透「连续相同组的最大耗时可通过相邻对比迭代得到」的本质,无需过度复杂的设计,抓住核心矛盾即可快速求解。
2025-11-03 19:11:16
702
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅