- 博客(11)
- 资源 (1)
- 收藏
- 关注
原创 盛最多水的容器
从最大宽度开始;每轮计算当前面积;宽度缩小时,只有移动较短边才可能提高有效高度;两个指针相遇后结束。双指针把所有线对的枚举从O(n²)优化为O(n),同时保持O(1)额外空间。更多技术实践与案例,可在 📗【姚前述】中查阅。
2026-08-25 17:18:33
354
原创 正则表达式匹配
dp[i][j]:s 的前 i 个字符,是否能被 p 的前 j 个字符完整匹配。普通字符或点号匹配时,继承左上角状态;星号匹配零次时跳过两个模式字符;星号匹配一次或多次时,消费一个字符串字符并保留模式位置。只要理解和分别代表什么,整个动态规划就会非常清晰。更多技术实践与案例,可在 📗【姚前述】中查阅。
2026-08-24 15:53:56
205
原创 回文数 Java 题解:只反转后一半数字,避免溢出
负数直接返回false;非零且末尾为零的数字直接返回false;不断将原数字个位追加到反转部分;到达数字中间时停止;偶数位比较两半是否相等;奇数位去掉中间数字后再比较。该方法不创建字符串、不完整反转整数,空间复杂度为O(1),也避免了整数溢出。更多技术实践与案例,可在 📗【姚前述】中查阅。
2026-08-20 17:21:58
305
原创 字符串转换整数
跳过前导空格;读取至多一个符号;连续读取数字;遇到其他字符立即停止;在追加数字前预判边界;越界时返回对应的 32 位极值。使用负数累计可以在不依赖 64 位整数的情况下,统一处理2147483647和两个不对称边界。更多技术实践与案例,可在 📗【姚前述】中查阅。
2026-08-19 20:48:24
183
原创 整数反转 Java 题解
整数反转的核心流程很简单:取个位、删个位、追加到结果。不能使用 64 位整数;不能先计算后判断溢出;正数和负数的最后一位阈值不同;不能用取绝对值的方式处理最小整数。掌握“运算前检查边界”的思路后,这类固定范围的数值题就能写出安全、稳定的实现。更多技术实践与案例,可在 📗【姚前述】中查阅。
2026-08-18 21:03:04
298
原创 Z 字形变换 Java 题解:按行模拟与方向切换
每一行使用一个;表示向下,-1表示向上;到达第一行或最后一行时切换方向;遍历完成后逐行拼接。这种写法时间复杂度为O(n),逻辑清晰,也能自然处理不同的行数。更多技术实践与案例,可在 📗【姚前述】中查阅。
2026-08-17 15:57:00
197
原创 最长回文子串 Java 题解,中心扩展法详解
奇数长度回文:只有一个中心字符,例如aba的中心是b;偶数长度回文:中心位于两个字符之间,例如abba的中心是bb之间的间隙。因此,遍历字符串时,每个位置都要尝试两种中心。每个字符尝试一次奇数中心;每个字符间隙尝试一次偶数中心;左右字符相等就继续扩展;记录遇到的最长区间并返回。这套方法时间复杂度为O(n²)、空间复杂度为O(1),实现简单且不容易出错。需要进一步优化到O(n)时,再学习 Manacher 算法即可。更多技术实践与案例,可在 📗【姚前述】中查阅。
2026-08-12 16:21:16
301
原创 寻找两个正序数组的中位数 Java 题解,二分分割详解
始终在较短数组上进行二分;根据左半区总长度计算另一个数组的分割位置;使用四个分割边界判断左右区域是否有序;根据总长度的奇偶性计算中位数;使用long避免偶数长度取平均值时溢出。理解分割线后,这道困难题会从复杂的数组合并问题,变成一个标准的二分查找问题。更多技术实践与案例,可在 📗【姚前述】中查阅。
2026-08-11 15:00:25
342
原创 无重复字符的最长子串 Java 题解,滑动窗口一次遍历
窗口始终代表连续子串;哈希表记录每个字符最近一次出现的位置;遇到窗口内的重复字符时移动左边界;使用Math.max保证左边界永不回退。掌握这个模板后,还可以继续解决“长度最小的子数组”“字符串排列”“覆盖子串”等一系列连续区间问题。更多技术实践与案例,可在 📗【姚前述】中查阅。
2026-08-11 10:16:14
229
原创 两数相加 Java 题解,链表如何模拟竖式加法
9] + [1]的正确结果是[0, 1]。循环结束后必须保留最后的进位,或者像推荐答案一样直接把carry!= 0放入循环条件。链表逆序存储,头节点就是个位,可以直接从头开始计算;使用carry保存上一位产生的进位;长度不足的链表按0处理;两个链表结束后,仍然要检查最后的进位。掌握虚拟头节点、双指针和进位处理后,这道题的代码就会变得非常自然。更多技术实践与案例,可在 📗【姚前述】中查阅。
2026-08-10 17:01:37
237
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅