0Pricing
JavaScript Academy · 课时

大 O 基础、热点与冷点路径(初学者的实用技巧)

建立大 O 直觉并关注热点路径。使用 Set/Map 替代嵌套扫描,避免重复工作,让代码保持小巧清晰

大 O 基础、热点与冷点路径(初学者的实用技巧) 是 CoddyKit 上的免费 JavaScript Academy 课时。 这是第 1 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 JavaScript Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 JavaScript Academy 课程共包含 3 节课。

总体概览

目标:无需复杂理论即可获得快速收益。

  • 大 O 直觉:避免双重循环
  • 热路径与冷路径:优化运行次数最多的部分
  • 使用 Set/Map 进行快速查找
  • 只执行一次,重复使用结果
大 O 基础、热点与冷点路径(初学者的实用技巧) — 插图 1

嵌套扫描代价高

嵌套扫描会使工作量成倍增加。每个 includes 都会再次遍历数组。

// Bad pattern: nested scan for membership (can be ~O(n^2))
const haystack = ["a","b","c","d","e"];
const needles = ["b","e","x"];
const foundSlow = [];

for (const n of needles) {
  // includes scans the array each time
  if (haystack.includes(n)) {
    foundSlow.push(n);
  }
}
console.log("slow found:", foundSlow);
大 O 基础、热点与冷点路径(初学者的实用技巧) — 插图 2

使用 Set 判断成员关系

只创建一次 Set;使用 has 快速判断成员关系。这样可以移除内部扫描。

// Better: build a Set once, then O(1)-ish checks (~O(n) overall)
const fastSet = new Set(haystack);
const foundFast = [];
for (const n of needles) {
  if (fastSet.has(n)) {
    foundFast.push(n);
  }
}
console.log("fast found:", foundFast);
大 O 基础、热点与冷点路径(初学者的实用技巧) — 插图 3

使用 Map 统计数量

Map 会存储数量,之后可以近似以 O(1) 的复杂度读取;不要为了重新计数而反复扫描数组。

// Build a frequency map once instead of scanning many times
const words = ["a","b","a","a","c","b"];
const freq = new Map();

for (const w of words) {
  const old = freq.get(w) || 0;
  freq.set(w, old + 1);
}

console.log("count a:", freq.get("a"));
console.log("count b:", freq.get("b"));
大 O 基础、热点与冷点路径(初学者的实用技巧) — 插图 4

只做一次(缓存)

如果某个值会重复出现,请将结果缓存起来。对于初学者,请让缓存保持简小且清晰。

// Do work once and reuse (tiny cache)
function heavy(x) {
  // pretend heavy math
  return x * x + 1;
}

const cache = new Map();

function heavyCached(x) {
  if (cache.has(x)) return cache.get(x);
  const val = heavy(x);
  cache.set(x, val);
  return val;
}

console.log("first:", heavyCached(5));
console.log("second:", heavyCached(5)); // cached
大 O 基础、热点与冷点路径(初学者的实用技巧) — 插图 5

专注于热路径

热路径:运行很多次的代码(在这里进行优化)。冷路径:很少运行的代码(保持简单)。

  • 移除热点代码中的内部循环。
  • 在热点成员关系判断和计数任务中使用 Set/Map。
  • 稍后再测量;先从清晰性开始。
大 O 基础、热点与冷点路径(初学者的实用技巧) — 插图 6

成员关系优化测验

快速检查:减少嵌套扫描。

大 O 基础、热点与冷点路径(初学者的实用技巧) — 插图 7

回顾

回顾:避免嵌套扫描,使用 Set/Map 进行查找和计数,并且只做一次工作。专注于热路径;让冷代码保持简单。

大 O 基础、热点与冷点路径(初学者的实用技巧) — 插图 8

常见问题解答

「大 O 基础、热点与冷点路径(初学者的实用技巧)」课时是免费的吗?

是的 — 「大 O 基础、热点与冷点路径(初学者的实用技巧)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 JavaScript Academy 课程的其余内容,请升级到 CoddyKit PRO。 JavaScript Academy 课程共包含 3 节课。

「大 O 基础、热点与冷点路径(初学者的实用技巧)」这节课中我会学到什么?

建立大 O 直觉并关注热点路径。使用 Set/Map 替代嵌套扫描,避免重复工作,让代码保持小巧清晰 你通过在浏览器中直接运行的动手代码来练习 JavaScript Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 JavaScript Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 JavaScript Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 3 节。

「大 O 基础、热点与冷点路径(初学者的实用技巧)」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 JavaScript Academy 课中编写并运行代码吗?

能。每节 JavaScript Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 大 O 基础、热点与冷点路径(初学者的实用技巧)
  2. 避免内存泄漏——闭包、计时器与引用
  3. 性能分析入门(Node/DevTools)——小型计时习惯
← 返回 JavaScript Academy