内置精讲
已通过题目
独立解题率
今日待验证
根据你的已通过记录和 45 分钟每日目标,优先推荐下一道未完成的题目。
完成四个最小动作:识别模式、预测状态、通过一题、生成复习验证卡。之后 AlgoCoach 才能更准确地安排下一步。
当前瓶颈
需要先做诊断
先完成四个最小动作,系统才能判断下一步。
诊断置信度:低 · 0 条证据
每天只保留一个主动作:先补当前瓶颈,再推进新题、复习验证、模式迁移和面试表达。
启动本周训练承诺
承诺只记录节奏,不替代真实能力证据;真正掌握仍由通过、预测和复习验证决定。
从第一题 Two Sum 开始:先预测状态,再跑通内置测试,最后生成明天的闭卷复习卡。
不要先逛完整 Hot100。按这 4 步做完,明天才知道自己是不是真的会。
Two Sum
打开第一题,先读输入输出和哈希表不变量。
预测一次状态
在可视化里先口算 Map 的下一步,再揭晓。
跑通内置测试
写完整第一版,用样例、边界和隐藏输入验过。
生成明天复习卡
今天通过不等于掌握,明天闭卷复现才算掌握。
理解
理解:确认输入输出和边界条件,不急着写代码
识别模式
识别模式:判断为什么这题适合当前算法模式
制定计划
计划:写出计划后再编码,直接运行内置测试
复习
复习:生成复习验证卡,隔天必须回忆、解释或空白重写
Two Sum · 两数之和
数组状态与哈希 · 给定一个整数数组 nums 和目标值 target,找到两个不同位置的数,使它们相加等于 target,返回这两个下标。
Contains Duplicate · 存在重复元素
数组状态与哈希 · 给定整数数组 nums,判断是否存在任意一个值至少出现两次。
Valid Anagram · 有效的字母异位词
数组状态与哈希 · 给定两个字符串 s 和 t,判断 t 是否由 s 中的字符重新排列得到;每个字符使用次数必须完全一致。
Group Anagrams · 字母异位词分组
数组状态与哈希 · 给定字符串数组 strs,把互为异位词的字符串分到同一组。
Top K Frequent Elements · 前 K 个高频元素
数组状态与哈希 · 给定整数数组 nums 和整数 k,返回出现频率最高的 k 个元素。
Product of Array Except Self · 除自身以外数组的乘积
数组状态与哈希 · 给定整数数组 nums,返回 answer,其中 answer[i] 等于除 nums[i] 以外所有元素的乘积,不能使用除法。
Longest Consecutive Sequence · 最长连续序列
数组状态与哈希 · 给定未排序整数数组 nums,返回最长连续数字序列的长度,要求整体 O(n)。
Valid Palindrome · 验证回文串
双指针 · 给定字符串 s,只考虑字母和数字并忽略大小写,判断它是否是回文。
Two Sum II - Input Array Is Sorted · 两数之和 II - 输入有序数组
双指针 · 给定升序数组 numbers 和目标 target,返回两个数之和等于 target 的 1-based 下标。
3Sum · 三数之和
双指针 · 给定整数数组 nums,找出所有不重复的三元组 [a,b,c],使 a+b+c=0。
Container With Most Water · 盛最多水的容器
双指针 · 给定高度数组 height,选择两条线与 x 轴形成容器,返回能盛最多水的面积。
Trapping Rain Water · 接雨水
双指针 · 给定每个位置的柱高,计算雨后能被柱子围住的总水量。
Best Time to Buy and Sell Stock · 买卖股票的最佳时机
滑动窗口 · 给定每天股票价格 prices,只允许买入一次并在未来某天卖出一次,返回最大利润;如果无法盈利返回 0。
Longest Substring Without Repeating Characters · 无重复字符的最长子串
滑动窗口 · 给定字符串 s,找出不包含重复字符的最长连续子串长度。
Permutation in String · 字符串的排列
滑动窗口 · 给定字符串 s1 和 s2,判断 s2 是否包含 s1 的某个排列作为连续子串。
Valid Parentheses · 有效的括号
栈 · 给定只包含括号字符的字符串 s,判断每个左括号是否都能被相同类型的右括号按正确顺序闭合。
Min Stack · 最小栈
栈 · 设计一个栈,支持 push、pop、top,并且 getMin 要在 O(1) 时间返回当前最小值。
Daily Temperatures · 每日温度
栈 · 给定每天温度 temperatures,返回每一天还要等几天才会遇到更高温度;若没有则为 0。
Largest Rectangle in Histogram · 柱状图中最大的矩形
栈 · 给定柱状图高度数组,找出能组成的最大矩形面积。
Binary Search · 二分查找
二分查找 · 给定升序整数数组 nums 和目标 target,返回 target 的下标;不存在则返回 -1。
Search in Rotated Sorted Array · 搜索旋转排序数组
二分查找 · 在不含重复元素的旋转升序数组中查找 target,找到返回下标,否则返回 -1。
Find Minimum in Rotated Sorted Array · 寻找旋转排序数组中的最小值
二分查找 · 在不含重复元素的旋转升序数组中找到最小值。
Reverse Linked List · 反转链表
链表 · 给定单链表 head,反转链表并返回新的头节点。
Merge Two Sorted Lists · 合并两个有序链表
链表 · 给定两个升序链表 list1 和 list2,合并为一条升序结果链表并返回头节点;结果链可以复用原节点,不要求为每个值新建节点。
Linked List Cycle · 环形链表
链表 · 给定单链表 head,判断链表中是否存在环。
Maximum Subarray · 最大子数组和
动态规划 · 给定整数数组 nums,找出和最大的非空连续子数组,返回这个最大和。
Jump Game · 跳跃游戏
贪心 / 区间 · 给定 nums[i] 表示从位置 i 最远能跳的步数,判断是否能从下标 0 到达最后一个下标。
Merge Intervals · 合并区间
贪心 / 区间 · 给定若干区间 intervals,合并所有重叠区间,返回互不重叠且覆盖相同范围的区间列表。
Insert Interval · 插入区间
贪心 / 区间 · 给定互不重叠且按 start 排序的区间列表,插入一个新区间并合并所有重叠区间。
Find All Anagrams in a String · 找到字符串中所有字母异位词
滑动窗口 · 给定字符串 s 和 p,返回 s 中所有 p 的异位词子串的起始下标。
Invert Binary Tree · 翻转二叉树
树 DFS/BFS · 给定一棵二叉树,交换每个节点的左右子树,返回翻转后的树。测试数据用层序数组书写,运行时会转换成 TreeNode。
Maximum Depth of Binary Tree · 二叉树的最大深度
树 DFS/BFS · 给定二叉树,返回从根节点到最远叶子节点的最大节点数。测试数据用层序数组书写,运行时会转换成 TreeNode。
Same Tree · 相同的树
树 DFS/BFS · 给定两棵二叉树,判断它们结构相同且对应节点值相同。测试数据用两个层序数组书写,运行时会转换成 TreeNode。
Binary Tree Level Order Traversal · 二叉树的层序遍历
树 DFS/BFS · 给定二叉树,按层从左到右返回每层节点值。测试数据用层序数组书写,运行时会转换成 TreeNode。
Validate Binary Search Tree · 验证二叉搜索树
树 DFS/BFS · 给定二叉树,判断它是否是合法 BST:每个节点必须落在祖先约束给出的开区间内。测试数据用层序数组书写,运行时会转换成 TreeNode。
Number of Islands · 岛屿数量
图 BFS/DFS · 给定由 '1' 和 '0' 组成的网格,返回岛屿数量。岛屿由上下左右相邻的陆地连接而成。
Clone Graph · 克隆图
图 BFS/DFS · 给定无向连通图,返回它的深拷贝。测试数据用邻接表数组书写,运行时会转换成 Node。
Course Schedule · 课程表
图 BFS/DFS · 给定课程数和先修关系,判断是否能完成所有课程。
Rotting Oranges · 腐烂的橘子
图 BFS/DFS · 给定橘子网格,每分钟腐烂橘子会感染四周新鲜橘子,返回全部腐烂所需分钟数;若不可能返回 -1。
Subsets · 子集
回溯 · 给定一个不含重复数字的数组 nums,返回它的所有子集。结果中不能有重复子集,子集和整体输出顺序都不重要。
Climbing Stairs · 爬楼梯
动态规划 · 每次可以爬 1 或 2 阶,给定 n,返回到达第 n 阶的不同方法数。
House Robber · 打家劫舍
动态规划 · 给定每间房金额,不能偷相邻房屋,返回能偷到的最大金额。
Coin Change · 零钱兑换
动态规划 · 给定硬币面额和总金额,返回凑成金额所需的最少硬币数;无法凑出返回 -1。
Longest Increasing Subsequence · 最长递增子序列
动态规划 · 给定整数数组,返回最长严格递增子序列的长度。
Word Break · 单词拆分
动态规划 · 给定字符串 s 和词典 wordDict,判断 s 是否能由词典中的单词拼接而成。
Kth Largest Element in an Array · 数组中的第 K 个最大元素
堆 / 优先队列 · 给定数组 nums 和整数 k,返回数组中第 k 大的元素。
Last Stone Weight · 最后一块石头的重量
堆 / 优先队列 · 每次取出最重的两块石头相撞,重量不同则剩余差值放回,返回最后石头重量或 0。
Find Median from Data Stream · 数据流的中位数
堆 / 优先队列 · 设计数据结构,支持 addNum 和 findMedian,动态返回数据流中位数。
Non-overlapping Intervals · 无重叠区间
贪心 / 区间 · 给定区间数组,返回最少需要移除多少个区间,才能让剩余区间互不重叠。
Gas Station · 加油站
贪心 / 区间 · 给定 gas 和 cost,判断从哪个加油站出发能绕环一周;若不存在返回 -1。
Minimum Number of Arrows to Burst Balloons · 用最少数量的箭引爆气球
贪心 / 区间 · 给定气球横向区间,射一支箭可击穿所有包含该 x 坐标的气球,返回最少箭数。