每日题单 · 2026-09-20
用法
每题先自己写 25 分钟(时间盒),卡住就找我要档位提示;做完把 [x] 勾上。 复盘题不写新笔记,直接在原文出处下方追加「二刷日期 + 一句话卡点」。
🆕 新题(codetop 前端岗频率榜)
| 题目 | 难度 | 频率 | 状态 |
|---|---|---|---|
| 53. 最大子数组和 | 中等 | 38 | 🔁(已刷过,重做) |
| 121. 买卖股票的最佳时机 | 简单 | 36 | 🔁(已刷过,重做) |
🔁 复盘(vault 轮换池)
完成打卡
- 新题 1:53. 最大子数组和
/**
* Kadane 算法 / 滚动变量优化 O(1) 空间
* @param {number[]} nums
* @return {number}
*/
var maxSubArray = function(nums) {
let res = nums[0], pre = nums[0]
for(let i = 1; i < nums.length; i++) {
pre = Math.max(nums[i], nums[i]+ pre)
res = Math.max(res, pre)
}
return res
};- 新题 2:121. 买卖股票的最佳时机
/**
* 一次遍历贪心维护历史最低点 / 空间 O(1)
* @param {number[]} prices
* @return {number}
*/
var maxProfit = function(prices) {
let min = prices[0]
let res = 0
for(let i = 1; i < prices.length; i++) {
min = Math.min(min, prices[i])
res = Math.max(res, prices[i] - min)
}
return res
};- 复盘 1:70. 爬楼梯
/**
* 斐波那契递推 / 解构赋值滚动变量
* @param {number} n
* @return {number}
*/
var climbStairs = function (n) {
let x = 0
let y = 1
for(let i = 2; i<= n; i++) {
[x, y] = [y, x+y]
}
return y+x
};- 复盘 2:322. 零钱兑换
/**
* 完全背包模型 / 自底向上 DP
* @param {number[]} coins
* @param {number} amount
* @return {number}
*/
var coinChange = function (coins, amount) {
let dp = new Array(amount + 1).fill(Infinity)
dp[0] = 0
for(let coin of coins) {
for(let i = coin; i<=amount; i++) {
dp[i] = Math.min(dp[i-coin] + 1, dp[i])
}
}
return dp[amount] === Infinity ? -1 : dp[amount]
};