自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode 每日一题笔记 日期:2026.09.02 题目:3875.构造奇偶一致的数组 I

直接返回常量true,省去奇偶统计、条件判断逻辑,代码极简。没有任何if分支,执行效率最高。

2026-09-03 16:09:39 177

原创 LeetCode 补拙笔记 日期:2026.09.03 题目:240.搜索二维矩阵 II

核心:最大距离等于首尾临界点位置差;最小距离是相邻临界点的位置差的最小值;优化亮点:不保存全部临界点,仅记录第一个、上一个临界点,省去集合开销;合并判断条件,减少if分支;关键点:链表头、尾节点不可能成为临界点,遍历条件要保证curr存在后继节点。

2026-08-31 19:35:51 254

原创 LeetCode 补拙笔记 日期:2026.07.13 题目:73. 矩阵置零

核心:复用矩阵首行首列作为零标记,仅两个布尔变量记录首行首列原始零状态,满足常数空间要求;优化亮点:合并三次独立预扫描为单次双层遍历,消除重复循环;倒序填充内部单元格,统一行/列标记判断逻辑,减少多层嵌套if;关键陷阱:必须先完成全部标记再置零,若提前修改首行首列会破坏标记信息。

2026-07-13 11:22:00 287

原创 LeetCode 每日一题笔记 日期:2026.06.25 题目:3737. 统计主要元素子数组数目 I

核心:数值映射转化问题为区间前缀和大于0计数;优化亮点:前缀和+哈希表消去二层循环,降低时间复杂度;减少循环嵌套分支,提升大数据下运行效率;target次数 > 子数组长度/2等价区间映射和 > 0,是解题核心数学转化。

2026-06-25 10:31:31 241

原创 LeetCode 每日一题笔记 日期:2026.06.18 题目:1344. 时钟指针的夹角

核心:通过数学公式分别计算时针、分针角度,再取最小夹角;优化亮点:用Math.min替换if判断,减少分支;拆分时针分针计算,逻辑更直观;关键公式:时针,分针6*min,最小夹角。

2026-06-22 17:43:33 244

原创 LeetCode 每日一题笔记 日期:2026.06.19 题目:1840. 最高建筑高度

核心:双向贪心修正限制高度,区间峰值公式求最大高度;优化亮点:使用一维数组分离编号与高度,减少二维数组频繁访问;合并最大值初始化逻辑,删减冗余临时变量;关键公式:两建筑区间峰值 = (建筑间距 + 左高度 + 右高度) // 2,是求解区间最高建筑的核心数学推导。

2026-06-22 17:30:12 195

原创 LeetCode 每日一题笔记 日期:2026.06.22 题目:1189. “气球”的最大数量

核心:统计关键字符频次,对l、o折半后取最小值;优化亮点:用数组替代HashMap避免字符串装箱;循环取最小值替代多段if判断,减少分支;balloon中 l、o 各需要两个,必须整除2再参与比较。

2026-06-22 16:52:41 246

原创 java虚拟机组成:虚拟机栈

局部变量表存方法参数与局部变量;操作数栈用于字节码运算临时存数据;动态链接指向常量池解析方法;返回地址记录调用处位置,方法结束后恢复上层代码执行。每个方法调用对应一个栈帧,栈帧包含五部分:局部变量表、操作数栈、动态链接、方法返回地址、附加信息。GC主要回收堆内存;栈内存不需要GC,方法执行完成栈帧直接出栈,内存自动释放。单栈内存设置越大,机器整体能创建的并发线程数量越少,会降低服务并发承载能力。不是,默认栈大小一般1024K(-Xss参数调整)。问:虚拟机栈里的栈帧存放什么?

2026-06-21 23:42:07 230

原创 LeetCode 每日一题笔记 日期:2026.06.19 题目:1732. 找到最高海拔

核心:前缀和遍历,实时维护全局最大值;Math.max替代if条件判断,精简代码,减少分支;关键点:初始最高海拔必须设为0,因为起点海拔为0,全程可能无上坡。

2026-06-21 23:41:23 237

原创 java虚拟机方法区

主要存储类元信息、类加载器、运行时常量池。class文件自带常量池,类加载后载入运行时常量池,把符号引用解析为真实内存地址。答:方法区是线程共享内存,JDK8实现为元空间,存放在本地堆外内存,JDK7及之前是堆内永久代。字节码文件内,一张符号信息表,保存未解析的符号引用:类名、方法名、字段名、字符串字面量。:将符号名转为内存真实地址,运行时直接寻址执行。类加载时,把Class常量池加载进方法区,完成。限制元空间,持续加载类后抛出。读取常量池第3号字符串。若元空间内存耗尽,抛出。,可打印完整常量池。

2026-06-21 23:29:46 193

原创 java程序计数器

程序计数器是JVM运行时数据区中的内存区域,每个线程独立持有一份。内部存储当前线程正在执行的,作为字节码解释器的执行指针。

2026-06-21 23:29:15 219

原创 Java堆(Heap)

Java堆是线程共享内存,存放全部对象与数组,内存耗尽抛出堆OOM;堆分为年轻代、老年代:年轻代Eden+两个等量Survivor,存放新生短期对象;老年代存放长期存活老对象;JDK7存在堆内永久代,易类加载OOM;JDK8移除永久代,改用堆外本地内存元空间,规避永久代溢出问题。

2026-06-21 23:28:21 240

原创 LeetCode 每日一题笔记 日期:2026.06.21 题目:1833. 雪糕的最大数量

核心贪心:想要数量最多,必须优先选购单价最低的雪糕。优化亮点:使用计数排序替代普通快排,降低时间复杂度,符合题目强制要求;价格有序遍历,提前剪枝减少无效循环。关键约束:题目明确要求使用计数排序,不能直接调用Arrays.sort。

2026-06-21 23:27:31 214

原创 LeetCode 每日一题笔记 日期:2026.06.16 题目:3612. 字符串特殊符号处理

核心:基于可变字符串缓冲区模拟四类符号操作;优化亮点:用switch替换多层if-else,扁平化分支结构,减少条件判断层级;使用setLength简化末尾删除写法;删除操作必须判断缓冲区长度,防止下标越界。

2026-06-16 10:01:24 243

原创 LeetCode 每日一题笔记 日期:2026.06.14 题目:2130. 链表最大孪生和

核心:利用链表中点分割 + 后半段反转,实现孪生节点配对。优化点:舍弃额外容器,原地操作链表,大幅降低空间开销,同时减少多余分支判断。关键技巧:快慢指针找中点、迭代反转链表是链表类题目的常用基础操作。

2026-06-14 19:18:37 220

原创 LeetCode 补拙笔记 日期:2026.06.07 题目:283. 移动零

核心思路:利用双指针在原地完成非零元素的“前移”,同时保持其相对顺序。优化点:避免不必要的交换:仅在当前元素非零且前面存在零时才进行移动;提前预热JVM:通过静态代码块减少首次运行的性能开销;减少if分支:逻辑更紧凑,提高执行效率。j指针只在遇到非零元素时移动,保证了非零元素的相对顺序不变。

2026-06-07 21:54:07 184

原创 LeetCode 补拙笔记 日期:2026.06.07 题目:128. 最长连续序列

核心思路:利用哈希表的O1O(1)O1查询实现线性时间复杂度。优化亮点:分情况处理:根据数据密集度选择布尔数组或哈希表,减少不必要的哈希开销。开放寻址哈希表:比HashMap更快,减少了自动装箱/拆箱的开销。剪枝优化:当找到的序列长度超过数组一半时,直接返回,无需继续遍历。关键技巧:只从序列的起始点开始遍历,避免重复计算,保证了OnO(n)On的时间复杂度。

2026-06-07 21:53:36 242

原创 LeetCode 补拙笔记 日期:2026.06.07 题目:49. 字母异位词分组

排序+哈希表,用排序后的字符串作为异位词的唯一标识。优化点:使用简化哈希表操作,减少分支判断;懒加载方式延迟初始化结果列表,提升性能。关键技巧:异位词分组的核心是找到一个稳定的键,排序是最直接的实现方式。

2026-06-07 21:53:04 582

原创 LeetCode 补拙笔记 日期:2026.06.07 题目:1. 两数之和

核心:利用哈希表将查询时间降为O1O(1)O1,实现线性时间复杂度。优化:双指针遍历减少了循环次数,能更快地找到答案,代码也更紧凑。关键技巧:边遍历边存入哈希表,而不是先存后查,避免了同一元素被重复使用的问题。

2026-06-07 21:52:34 358

原创 LeetCode 每日一题笔记 日期:2026.06.06 题目:2196. 根据描述创建二叉树

通过标记“无父节点”找到根节点,同时一次性构建树结构。优化点:用数组直接存储节点,避免递归构建,减少分支判断,逻辑更简洁高效。关键技巧:根节点的识别方法是这类题的核心,利用“不会出现在子节点位置”这一特征快速定位。

2026-06-07 21:50:51 200

原创 LeetCode 每日一题笔记 日期:2026.06.04 题目:3751. 范围内总波动值 I

暴力思路:逻辑直观,适合小数范围,直接逐位判定峰谷;前缀差分+数位预处理fr−fl−1fr−fl−1求区间和,预处理预存各数位组合贡献,将复杂度从线性枚举压缩至数位对数级别;核心:单个峰谷只由连续三位决定,预处理批量统计同前缀下所有后缀的波动总和。

2026-06-04 08:33:10 206

原创 LeetCode 每日一题笔记 日期:2026.06.02 题目:3635. 最早完成陆地和水上游乐设施的时间 II

核心:拆分两种游玩顺序,分别求最优解再取最小;原版:适配数据范围偏大场景,用排序二分优化枚举;优化版:贪心假设最优搭配为两类单品最优组合,代码极简、线性效率;关键:后项目启动时间 =max(自身起始时间,前项目结束时间)。

2026-06-04 08:32:16 243

原创 LeetCode 每日一题笔记 日期:2026.06.02 题目:3633. 最早完成陆地和水上游乐设施的时间 I

贪心关键点:全局最优一定是单品最优互相组合,不用全量枚举所有配对;只分先后两种游玩次序,分别计算最优再对比即可;优化把平方复杂度降为线性,大数据下效率提升明显。

2026-06-04 08:31:43 230

原创 LeetCode 每日一题笔记 日期:2026.06.01 题目:2144. 打折购买糖果的最小开销

贪心策略,通过让高价糖果被免费赠送来最小化开销。两种解法均基于“每三个一组,前两个付费”的思想,排序法实现更简洁,优先队列法更直观。关键:从高到低处理糖果,确保免费赠送的是尽可能贵的糖果。

2026-06-01 09:04:06 207

原创 LeetCode 每日一题笔记 日期:2026.05.31 题目:2126. 摧毁小行星

贪心思想,优先处理质量小的目标,是解决此类“增长型”问题的通用策略;排序解法直观易写,面试优先使用;二进制分组解法在大数据下效率更高,可作为进阶优化;关键细节:行星质量累加可能超过int范围,需用long类型存储,避免溢出错误。

2026-05-31 22:26:30 273

原创 LeetCode 补拙笔记 日期:2026.05.29 题目:1559. 二维网格图中探测环

并查集检测环,通过合并相同字符的相邻节点,利用连通性判断环的存在。优化后代码在遍历顺序和并查集初始化上做了简化,逻辑更紧凑。关键技巧:只检查右侧和下侧邻居,避免重复合并;路径压缩优化查找效率。

2026-05-29 13:51:44 283

原创 LeetCode 每日一题笔记 日期:2026.05.29 题目:3300. 最小元素

数学取模求各位和,比字符串方式更高效。优化点:去掉字符串转换操作,纯数值运算提升性能。num % 10取最后一位,num /= 10去掉最后一位。

2026-05-29 12:56:10 181

原创 LeetCode 每日一题笔记 日期:2026.05.28 题目:3093. 最长公共后缀查询

后缀转前缀 + 字典树,通过逆序字符串将后缀匹配问题转化为前缀匹配问题。优化关键:在字典树节点中提前维护“最优”下标,避免查询时二次比较,直接返回结果。技巧:根节点存储全局最优,处理无公共后缀的边界情况,简化查询逻辑。

2026-05-28 17:39:11 231

原创 LeetCode 补拙笔记 日期:2026.05.27 题目:61. 旋转链表

统计长度 + 断尾接原头,是旋转链表最直接高效的实现方式;优化后代码减少了冗余变量和分支判断,逻辑更清晰,可读性更高;关键技巧:利用链表的尾节点直接接原头节点,避免了额外的空间开销,实现原地旋转。

2026-05-27 09:21:27 85

原创 LeetCode 每日一题笔记 日期:2026.05.27 题目:3121. 统计特殊字母的数量 II

记录字符首次/末次位置,判断位置关系。优化思路:用位置判断替代复杂的状态标记,逻辑更清晰。关键:小写全部在大写前面 →last[小写] < first[大写]。

2026-05-27 08:45:35 78

原创 LeetCode 补拙笔记 日期:2026.05.26 题目:48. 旋转图像

转置 + 水平翻转,将旋转问题拆解为两个简单的原地操作;优化后代码逻辑更紧凑,减少了冗余变量和分支,可读性更高;关键技巧:顺时针旋转90°的原地操作是矩阵类题目的经典模板,转置+水平翻转的组合是最简洁高效的实现方式。

2026-05-26 19:04:54 87

原创 LeetCode 每日一题笔记 日期:2026.05.26 题目:3120. 特殊字母的数量

单个数组统计大小写出现次数。优化点:减少判断、减少二维数组,逻辑更清晰。关键:小写占前26位,大写占后26位,一一对应检查即可。

2026-05-26 15:02:46 74

原创 LeetCode 补拙笔记 日期:2026.05.25 题目:796. 旋转字符串

利用字符串拼接 + 子串匹配,将旋转问题转化为子串问题。优化后的KMP实现,避免了内置方法的不确定性,保证了线性时间复杂度,是面试中更推荐的写法。s+s包含了s的所有旋转状态,这是解决这类问题的经典套路。

2026-05-25 22:26:27 250

原创 LeetCode 每日一题笔记 日期:2026.05.25 题目:1871. 跳跃游戏 VII

差分数组 + 前缀和优化跳跃区间的可达性更新。优势:避免On2O(n^2)On2暴力遍历,效率大幅提升。本质:用区间标记代替逐个标记,是跳跃游戏的经典优化思路。

2026-05-25 22:25:27 330

原创 LeetCode 每日一题笔记 日期:2026.05.24 题目:1340. 跳跃游戏 V

本题核心是利用记忆化搜索解决树形依赖问题,基础版实现简单但易超时,优化版通过单调栈预处理大幅降低时间复杂度。解题关键在于理解“路径中无更高元素”的规则,通过预处理找到能跳的终点,避免不必要的遍历。对于大规模用例,优先使用优化版;基础版适合快速实现和理解问题。

2026-05-24 21:53:44 826

原创 LeetCode 每日一题笔记 日期:2026.05.23 题目:1752. 检查数组是否经排序和轮转得到

统计下降次数,利用有序数组轮转的特性,下降次数不超过1次即为合法;优化后代码通过提前终止减少不必要的遍历,同时保持逻辑简洁;本题关键是理解有序数组轮转后的局部有序性,以及下降次数的判定条件。

2026-05-24 21:52:48 93

原创 LeetCode 每日一题笔记 日期:2026.05.22 题目:33. 搜索旋转排序数组

局部有序的二分查找,利用旋转数组的特性,每次只在有序区间内判断目标值位置;关键技巧:通过nums[mid]与nums[left]的大小关系,快速判断哪一侧区间有序;优化后代码通过三目运算符简化分支,逻辑更紧凑,同时保持原算法的正确性与时间复杂度。

2026-05-24 21:51:45 252

原创 LeetCode 每日一题笔记 日期:2026.05.21 题目:3043. 最长公共前缀的长度

前缀存储 + 匹配查询,哈希表法实现简单,字典树法在大数据下效率更高;优化后代码统一了单数字前缀的处理逻辑,减少了冗余分支,可读性更强;关键技巧:通过num /= 10循环剥离数字前缀,避免字符串转换的额外开销。

2026-05-24 21:49:01 276

原创 LeetCode 每日一题笔记 日期:2026.05.20 题目:2657. 找到前缀公共数组

计数统计 + 一次遍历。关键:元素出现两次即为公共元素,直接计数即可。优化版用数组替代哈希表,速度更快、代码更短。

2026-05-20 21:32:00 114

原创 LeetCode 每日一题笔记 日期:2026.05.16 题目:154. 寻找旋转排序数组中的最小值 II

带重复元素的二分查找,利用right--处理的情况;关键区别:与无重复元素版本相比,增加了相等时的线性收缩步骤;优化后代码逻辑更紧凑,去掉了不必要的方法调用,可读性和效率更高。

2026-05-19 20:12:03 228

空空如也

空空如也

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

TA关注的人

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