- 博客(33)
- 收藏
- 关注
原创 LeetCode 最大子数组和:动态规划解法详解 (Java)
摘要:本文详细介绍了解决最大子数组和问题的动态规划方法。通过定义状态dp[i]表示以nums[i]结尾的子数组最大和,利用转移方程dp[i] = max(dp[i-1]+nums[i], nums[i])递推求解。算法时间复杂度为O(n log n),空间复杂度O(n)。文章还提供了优化思路(如遍历取最大值可优化至O(n)),并通过示例推演展示计算过程。核心在于理解状态转移逻辑:当dp[i-1]为负时,舍弃前缀能获得更优解。该方法是解决连续子数组优化问题的经典范式。
2025-05-29 15:28:55
443
原创 力扣热题100(附刷题表版)
不仅方便查看题目,并且,在完成题目后,,我放在了结尾,大家自取,直接复制粘贴到。2. 字母异位词分组(中等)3. 最长连续序列(中等)1. 两数之和 (简单)时做记录,整理了下面。
2025-05-28 19:11:44
1089
原创 LeetCode LCR 010 和为 K 的子数组 (Java)
暴力枚举法思路简单,但仅适用于小规模数据。前缀和+哈希表通过空间换时间,将复杂度降至线性,是处理大规模数据的高效方法。特别注意哈希表的初始化与更新逻辑,确保正确处理所有边界情况。相关题目LeetCode 560. 和为K的子数组。
2025-05-17 02:10:16
457
原创 LeetCode LCR 015. 找到字符串中所有字母异位词 (Java)
暴力滑动窗口法直观易懂,但时间复杂度较高,适用于小规模数据。优化后的动态滑动窗口通过减少重复计算,显著提升了效率,是解决此类问题的标准方法。核心在于维护窗口的字符频率差异,避免全量比对,将时间复杂度从 O(n * m) 优化到 O(n)。
2025-05-16 00:01:29
540
原创 LeetCode LCR 016. 无重复字符的最长子串 (Java)
• 空间复杂度:O(1),字符集大小固定(ASCII 最多 128 种字符)。• 收缩左边界:一旦发现重复,左指针右移一位,移除原左边界字符。• 左指针每次仅移动一位,逐步缩小窗口,确保窗口内始终无重复。• 每次左指针右移后,右指针从当前位置继续扩展,无需回溯。• 时间复杂度:O(n),左右指针各遍历一次字符串。• 扩展右边界:右指针不断右移,直到遇到重复字符。• 每个字符最多被左右指针各访问一次,无重复操作。表示当前窗口的左右边界,窗口内字符不重复。实时记录窗口内的字符,确保窗口的唯一性。
2025-05-13 15:47:39
467
原创 LeetCode LCR 007. 三数之和 (Java)
通过排序预处理,结合双指针高效寻找两数之和,同时在每一步跳过重复元素,确保结果唯一。这种方法巧妙地将时间复杂度降至 O(n²),是解决此类问题的经典思路。
2025-05-10 23:29:16
490
原创 LeetCode 11.盛最多水的容器 (Java)
双指针法的优势:通过一次遍历高效解决问题,避免暴力法的 O(n²) 复杂度。关键思想:移动较短的边以探索更高的板,确保不漏掉更大储水量的可能性。相似问题42. 接雨水15. 三数之和掌握双指针法的移动策略,能有效解决数组中的区间最优问题!
2025-05-08 14:00:20
1305
原创 LeetCode 283:移动零 (Java)
暴力法:思路直接但效率低,适合小规模数据。双指针法:高效且简洁,通过一次遍历解决问题,是本题最优解。相似问题27. 移除元素26. 删除有序数组中的重复项掌握双指针法的思想,能有效解决数组操作中的许多问题!
2025-05-08 09:30:27
1050
原创 LeetCode 128. 最长连续序列(Java)
暴力解法(如排序后遍历)的时间复杂度为 O(n log n),不满足题目要求。:利用哈希表(HashSet)快速查询元素是否存在,避免重复遍历。,找到其中最长的连续数字序列的长度。要求算法的时间复杂度为。循环向后查找连续的数,直到无法继续。存储所有元素,去除重复值。是某个连续序列的最小值。给定一个未排序的整数数组。遍历哈希表中的每个元素。,哈希表为空,直接返回。解释:最长连续序列是。
2025-05-07 11:37:05
672
原创 LeetCode LCR 033. 字母异位词分组
(字符出现次数相同但顺序不同的字符串)的字符串分组,并返回分组后的结果列表。,代码简洁且易于理解,适合面试快速实现。若追求极致性能,可尝试字符计数法。为每个字母分配一个质数,计算字符串的质数乘积作为键。用字符出现次数作为标识(例如。:避免字符串拼接或排序的开销。:可能溢出(需使用大整数)。),避免排序的时间开销。:字符串较长时更高效。
2025-05-06 16:20:15
1089
原创 LeetCode 1. 两数之和(Java)
尤其在处理大规模数据时,性能优势明显。在实际面试中,可以先写出暴力解法,再优化为哈希表法,展示对时间复杂度的敏感度。直接遍历数组中的每一对组合,检查它们的和是否等于。的两个数,并返回它们的下标。,且同一元素不能重复使用。当数组长度较大时(例如。(哈希表存储所有元素)
2025-05-06 14:46:12
481
原创 redis“缓存击穿“和“雪崩“形象解析
现象缓存击穿缓存雪崩攻击目标单个热点数据(茅台)大量缓存数据(所有促销商品)触发条件热点数据过期 + 高并发大量数据同时过期 + 高并发破坏力局部击穿(单点高压)全面崩溃(系统级瘫痪)
2025-04-22 14:05:36
417
原创 PO VO DTO到底是个啥?
是常见的分层架构中用于解耦不同层级数据交互的。,它们并非全新的架构方式,而是。性能较低且类型转换不够灵活。在 Java 企业级开发中,
2025-03-10 15:56:32
674
原创 Spring Boot 请求参数接收速查手册
接收 JSON 格式的请求体数据。:从 URL 路径中提取参数(如。:自动将多个参数绑定到对象属性。:接收单个键值对参数(如。:接收多个同名参数(如。
2025-03-10 15:54:38
873
原创 LeetCode 116:省份数量(Java版)
把城市看作人,城市之间的直接连接看作“直接朋友关系”,省份就是“最大的朋友圈”——比如A和B是朋友,B和C是朋友,那么A、B、C属于同一个朋友圈(省份)。DFS解法通过“染色”思想,以每个城市为起点,深度优先标记整个省份。当你发现一个未标记的城市,就用红色笔涂满它所在的整个省份(所有直接或间接相连的城市),然后继续找下一个未标记的城市。DFS(深度优先搜索)能从一个起点出发,尽可能深地遍历所有相连节点,正好适合一次性标记整个“朋友圈”。的定义是一组直接或间接相连的城市,且这些城市之间与其他组没有连接。
2025-03-06 09:13:26
396
原创 lombok正确引入依赖,却无法使用@Slf4j中的log.info问题的解决方法
快速解决lombok中的@Slf4j中的log.info()报错问题
2025-03-04 21:28:32
878
原创 网络热门SQL50题最终篇-完结撒花
通过这5道题,我们解锁了SQL中时间函数年龄计算拒绝虚报年龄!用替代YEAR()。周/月时间窗WEEK()和MONTH()是天然的“时间筛子”。边界处理年末周数、月份轮回需特殊关照。
2025-02-28 14:23:42
446
原创 《网络热门SQL50题,每天5道(3月1号)(40-45)》
自连接:用表的“分身”比较数据窗口函数:灵活处理分组排名分组统计筛选数据集合比对:通过子查询实现“选修全部课程”明日预告:递归查询、复杂连接!关注我,SQL从入门到全栈!🚀。
2025-02-28 10:43:24
598
原创 数据结构-单链表模板实现-C语言版
链表是数据结构中的“火车”,每节车厢(节点)通过“连接器”(指针)串联。本文将用C语言手把手教你搭建一列,实现等核心操作,并附完整可运行代码!
2025-02-27 20:37:40
746
原创 力扣-1929数组-数组串联
核心技巧:利用一次遍历完成两次填充,避免多次循环。适用场景:需要快速生成重复模式的数组。思考延伸:如果题目要求将原数组重复k次,如何优化代码?(答案:循环k次,每次偏移i * n的位置填充)通过这道题,可以掌握数组操作和内存管理的基础技巧,为更复杂的算法问题打下基础!
2025-02-27 12:03:15
233
原创 《网络热门SQL50题,每天5道(2月28号)(36-40)》
多表连接:三表甚至四表联查(像搭积木一样关联数据)。条件过滤:精确筛选目标数据(成绩范围、课程ID、教师姓名)。聚合统计COUNT(*)计算分组记录数。排序与限制快速获取极值。明日预告:复杂子查询!关注我,SQL从入门到精通不迷路!
2025-02-27 09:45:59
639
原创 网络热门SQL50题,每天5道(2月27号)(31-35)
SQL学习就像升级打怪,只有不断实战才能解锁新技能!今天我们继续攻克SQL50题中的第31-35题,用最通俗易懂的解析,带你轻松掌握复杂查询的奥秘!SQL 31——查询1990年出生的学生名单题目:找到所有1990年出生的学生信息。SELECT a.*思路拆解提取年份:用YEAR()函数从生日字段s_birth中提取年份(类似从蛋糕上切下蜡烛部分)。精准匹配:筛选出年份等于1990的记录(就像在日历上圈出所有1990年的日期)。小贴士:如果生日字段是字符串格式,需先转换为日期类型再提取年份。
2025-02-26 12:01:16
824
原创 20.有效的括号--力扣(LeetCode)--Java版
根据有序的括号必须遵循后进先出的原则,选择使用栈来灵活解决。好的到此今日的每天一道力扣结束啦,关注我,和我一起在力扣中成长吧!!![比心][比心]
2024-11-02 11:39:39
674
原创 14. 最长公共前缀--力扣(LeetCode)--Java版
1.方法思路:把第一个字符串看作公共前缀,因为最大的情况无非就是第一个字符串就是公共前缀,然后依次与剩下字符串比较,更新公共前缀,即可解答2..是String类的一个方法,用来查找指定子字符串str在目标字符串中首次出现的位置(索引)。3.substring(beginIndex,endIndex)用于提取字符串,在题中用于缩短公共前缀。
2024-10-29 08:56:47
616
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人