Day1 数组字符串哈希表当日核心可量化目标照着本计划全部执行完成后你将达成吃透4个核心考点的应试逻辑能口述适用场景与解题边界3个核心解题模板可连续2遍闭卷无错默写能精准匹配对应题目5道必刷中等题闭卷限时完成最终AC率≥80%每道题能清晰讲清解题思路建立标准错题复盘体系能独立完成每道题的时间/空间复杂度分析彻底解决「懂概念但写不出代码」的入门卡点形成应试刷题的标准流程前置准备执行前5分钟完成固定考试用的编程语言全程只用这一种语言练习禁止中途切换无指定优先选Python代码量少、语法简洁应试容错率高准备代码编辑器、计时器、单独的错题本文档电子/手写均可、白纸用于写思路、伪代码和默写模板全程闭卷要求除了计划内指定的「看题解」环节其余时间禁止查任何资料、搜API、看模板完全模拟考试环境上午场知识点模板固化总计120分钟精准到分钟执行模块1数组前缀和/差分 知识点复盘0-30分钟时间分段执行动作验收标准必须全部达成再进入下一环节0-10分钟1. 在白纸上默写前缀和核心定义、一维前缀和公式、差分核心定义、一维差分公式2. 标注2个核心考点的应试适用场景- 前缀和子数组和计算、区间和查询、频繁区间求和场景- 差分区间批量增减修改、多次区间操作后求最终数组能无参考写出核心公式口述3种必须用前缀和解决的题目场景讲清preSum[0] 0的核心作用规避边界判断适配从数组首位开始的子数组10-25分钟1. 拆解前缀和2个应试核心技巧- 技巧1前缀和哈希表解决「和为K的子数组」类问题写清核心逻辑preSum[j] - preSum[i] k→ 找preSum[i] preSum[j] - k的出现次数- 技巧2差分的核心操作区间[l,r]加val只需diff[l] val、diff[r1] - val最后求前缀和还原数组2. 标注2个高频易错点数组越界、负数/0值场景的前缀和处理能口述前缀和哈希表的优化逻辑把O(n²)暴力解法降到O(n)能写出差分的核心操作代码片段25-30分钟自我验收口述手写验证不达标重复上述环节无参考写出前缀和基础代码框架讲清2个核心技巧的适用边界模块2字符串滑动窗口 知识点复盘30-60分钟时间分段执行动作验收标准30-40分钟1. 白纸上默写滑动窗口核心逻辑、2种窗口类型固定窗口/可变窗口2. 标注应试适用场景连续子串/子数组问题、求最值/计数问题、满足单调性的场景窗口扩大时条件不满足缩小后一定也不满足3. 明确中等题核心考点90%考察可变窗口最长/最短符合条件的子串能清晰区分滑动窗口的适用/不适用场景比如子序列问题不能用滑动窗口口述滑动窗口解决「无重复字符的最长子串」的核心思路40-55分钟拆解滑动窗口应试4步标准流程写清每一步的执行规则1. 初始化左指针left0结果存储变量窗口状态存储容器哈希表/数组2. 扩大窗口右指针right遍历数组/字符串更新窗口状态3. 缩小窗口当窗口不满足条件时移动左指针更新窗口状态4. 更新结果在窗口扩大/缩小的正确时机更新最终结果能口述4步流程的执行顺序明确「什么时候缩小窗口」「什么时候更新结果」这两个核心卡点标注高频易错点左右指针越界、窗口状态更新遗漏、结果更新时机错误55-60分钟自我验收无参考写出滑动窗口的基础框架讲清可变窗口的核心逻辑模块3哈希表原理API哈希冲突处理60-90分钟时间分段执行动作验收标准60-70分钟1. 默写哈希表核心原理数组映射函数、O(1)增删改查的核心逻辑2. 手写你所用语言的哈希表应试常用API必须背下来考试不能查- 增键值对添加- 查判断键是否存在、获取键对应的值- 改更新键对应的值- 删删除键值对、清空- 遍历键遍历、值遍历、键值对遍历3. 标注哈希表应试核心优势用O(1)查找替代O(n)遍历降低时间复杂度能无参考写出所用语言的哈希表常用API口述哈希表的核心优势70-85分钟1. 拆解哈希表5大应试高频场景每个场景标注对应例题- 场景1频率统计字母异位词分组、TopK问题- 场景2快速查找两数之和、最长连续序列- 场景3去重无重复字符的最长子串- 场景4前缀和哈希表组合和为K的子数组- 场景5映射关系存储罗马数字转整数2. 哈希冲突处理只掌握2种考试常考的方法口述核心逻辑即可无需深抠底层- 链地址法拉链法数组链表冲突的元素存在链表中- 开放寻址法冲突后向后找空的位置存储能口述每个场景下哈希表的核心作用讲清2种哈希冲突处理方法的核心逻辑85-90分钟自我验收能对应上午的5道必刷题说出每道题中哈希表的作用模块43个核心模板整理理解固化90-120分钟核心要求先理解模板每一行的含义、适用场景、边界处理再抄写到模板手册中作为当日默写的标准版本禁止死记硬背。模板1前缀和通用模板含前缀和哈希表进阶版# 基础版一维前缀和求区间和defpreSum_template(nums):nlen(nums)# 前缀和数组preSum[0]0preSum[i]表示前i个元素的和nums[0]到nums[i-1]preSum[0]*(n1)foriinrange(n):preSum[i1]preSum[i]nums[i]# 求区间[l,r]的和闭区间从0开始preSum[r1] - preSum[l]returnpreSum# 进阶版前缀和哈希表解决和为K的子数组问题适配560题defpreSum_hash_template(nums,k):fromcollectionsimportdefaultdict# 哈希表key前缀和的值value该前缀和出现的次数preSum_mapdefaultdict(int)# 初始化前缀和为0出现1次处理从数组首位开始的子数组preSum_map[0]1preSum0res0fornuminnums:preSumnum# 核心逻辑找preSum - k是否存在存在则累加次数ifpreSum-kinpreSum_map:respreSum_map[preSum-k]# 更新哈希表注意先统计结果再更新避免重复计算preSum_map[preSum]1returnres模板2滑动窗口通用模板可变窗口适配90%中等题# 通用模板求最长/最短符合条件的子串/子数组defsliding_window_template(s):fromcollectionsimportdefaultdict# 1. 初始化窗口状态存储、左右指针、结果变量windowdefaultdict(int)# 窗口状态按需修改为数组/setleft0res0# 结果存储按需修改为最大值/最小值/计数# 2. 扩大窗口右指针遍历forrightinrange(len(s)):# 取出当前元素更新窗口状态curs[right]window[cur]1# 3. 缩小窗口当窗口不满足条件时移动左指针# 【这里是核心按需修改窗口的判断条件】whilewindow[cur]1:# 示例当前元素重复不满足无重复条件# 取出左指针元素更新窗口状态left_curs[left]window[left_cur]-1# 左指针右移left1# 4. 更新结果【按需修改更新时机最长在while外最短在while内】resmax(res,right-left1)returnres模板3哈希表统计/去重通用模板# 模板1频率统计模板适配字母异位词分组、频率计数类题defhash_count_template(strs):fromcollectionsimportdefaultdict count_mapdefaultdict(int)# 统计每个元素出现的次数forsinstrs:count_map[s]1returncount_map# 模板2哈希表去重快速查找模板适配最长连续序列、去重类题defhash_dedup_template(nums):# 去重O(1)查找num_setset(nums)res0fornuminnum_set:# 核心逻辑只从连续序列的起点开始遍历避免重复计算ifnum-1notinnum_set:cur_numnum cur_len1# 向后查找连续序列whilecur_num1innum_set:cur_num1cur_len1resmax(res,cur_len)returnres时间分段执行动作验收标准90-110分钟逐行理解3个模板标注每一行的作用、修改点、边界处理对应到具体例题把模板抄写到你的模板手册中能口述每个模板的适用场景知道模板中哪些地方需要根据题目修改哪些是固定不变的110-120分钟闭卷默写3个模板的核心框架对照标准版本修改错误标注易错点能无参考写出3个模板的核心代码无语法错误核心逻辑完整下午场闭卷限时刷题总计180分钟严格限时执行刷题铁律必须100%遵守全程闭卷不查任何资料、不看模板、不搜API计时器全程开启单题严格限时20分钟到点立刻停笔无论是否写完都进入下一题每道题必须先写思路和伪代码再写代码禁止上来就写代码代码写完后必须用测试用例自测再结束单题计时执行流程精准到分钟阶段1刷题前准备0-10分钟打开代码编辑器新建5个代码文件分别对应5道题准备好计时器白纸和笔关闭所有无关网页/软件默念单题标准解题5步流程严格按这个流程执行① 读题圈重点2分钟→ ② 思路梳理伪代码5分钟→ ③ 代码编写10分钟→ ④ 自测验证3分钟阶段2单题闭卷限时刷题10-110分钟总计100分钟每道题严格20分钟计时到点立刻停笔5道题顺序严格按以下顺序执行难度循序渐进对应上午的模板题号题目名称对应模板核心考点必测用例必须全部自测第1题LeetCode 3. 无重复字符的最长子串滑动窗口模板滑动窗口哈希表去重1. 输入“abcabcbb” → 输出32. 输入“bbbbb” → 输出13. 输入“pwwkew” → 输出34. 输入“” → 输出0第2题LeetCode 560. 和为 K 的子数组前缀和哈希表模板前缀和、哈希表统计1. 输入nums [1,1,1], k 2 → 输出22. 输入nums [1,2,3], k 3 → 输出23. 输入nums [-1,-1,1], k 0 → 输出1第3题LeetCode 49. 字母异位词分组哈希表统计模板哈希表映射、字符串排序1. 输入[“eat”,“tea”,“tan”,“ate”,“nat”,“bat”] → 输出[[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]2. 输入[“”] → 输出[[“”]]3. 输入[“a”] → 输出[[“a”]]第4题LeetCode 128. 最长连续序列哈希表去重模板哈希集合、去重、O(n)遍历1. 输入nums [100,4,200,1,3,2] → 输出42. 输入nums [0,3,7,2,5,8,4,6,0,1] → 输出93. 输入[] → 输出0第5题LeetCode 189. 轮转数组数组操作前缀和数组原地操作、边界处理、空间优化1. 输入nums [1,2,3,4,5,6,7], k 3 → 输出[5,6,7,1,2,3,4]2. 输入nums [-1,-100,3,99], k 2 → 输出[3,99,-1,-100]阶段3题解学习问题标注110-180分钟总计70分钟核心要求不修改代码只标注问题错题修改放到晚上复盘环节逐题查看LeetCode官方题解高赞精选题解优先看和你上午模板匹配的解法不要看奇技淫巧的解法每道题对比自己的代码标注以下内容思路是否正确有没有偏离最优解法代码是否AC没AC的话错误点在哪里边界处理是否完整有没有遗漏测试场景时间/空间复杂度是否达到最优有没有优化空间对应上午的哪个模板模板的使用是否正确把所有未AC、思路错误、超时的题目标记为待复盘错题录入错题本的待处理区晚上场复盘固化总计90分钟闭环当日所有内容阶段1标准错题本整理0-30分钟必须使用以下标准格式每道错题逐行填写禁止敷衍这是你当日最高价值的内容错题必填项填写要求题号题目名称准确填写比如LeetCode 3.无重复字符的最长子串错误类型严格分类思路问题/边界问题/语法问题/超时问题/模板使用错误错误代码片段粘贴你限时写的错误代码标注错误的行正确思路写清最优解法的核心逻辑对应哪个模板正确代码粘贴bug free的最优解法代码标注核心修改点复杂度分析写清时间/空间复杂度以及为什么是这个复杂度下次注意事项1-2句话写清考试时如何避免同样的错误要求30分钟内完成所有错题的录入哪怕5道题全错也要全部按格式录入不遗漏任何一个错误点。阶段2错题闭环代码重写30-60分钟闭卷状态下逐道重写所有错题每道题限时15分钟必须写出bug free的代码能通过所有测试用例每写完一道题口述一遍解题思路对应哪个模板核心优化点是什么确保完全理解而不是背代码对于AC的题目也逐题过一遍对比最优解法优化自己的代码标注可以简化的点确保完全吃透阶段3模板默写固化60-80分钟拿出白纸闭卷默写当日的3个核心模板包括基础版和进阶版默写完成后对照上午的标准模板逐行核对标注错误的地方重复默写直到连续2遍无错、无遗漏默写完成才算达标最后一遍默写完成后在模板旁边标注每个模板的适用场景、高频易错点加深记忆阶段4复杂度分析固化当日闭环验收80-90分钟逐题口述5道必刷题的最优时间复杂度、空间复杂度讲清复杂度的推导逻辑形成下意识的分析习惯当日最终验收必须全部达成才算完成Day1的全部内容3个核心模板连续2遍闭卷无错默写5道必刷题全部能闭卷写出bug free的代码AC率100%错题本按标准格式整理完成所有错题完全吃透能口述每道题的解题思路、对应模板、复杂度分析最后用1句话总结当日的薄弱点标注到次日计划的前置补漏环节中应急补漏方案若某道题20分钟完全没思路先写暴力解法能写多少写多少标注思路卡点晚上复盘重点攻克不要死磕影响整体进度若上午知识点超时压缩模板理解时间优先保证模板框架记住下午刷题后结合题目再加深理解不要耽误下午的刷题环节若晚上复盘超时优先保证错题闭环和模板默写复杂度分析可以简化次日早上再补核心模板和错题必须当日闭环不能留到第二天