上一页 1 2 3 4 5 6 ··· 20 下一页
摘要: 哈希表通常被描述成“均摊 \(O(1)\)”的数据结构。这个说法在日常编程里很好用,但它暗含了一个前提:输入没有系统性地撞向同一批桶。只要这个前提失效,哈希表就会从一个轻快的工具变成一条很长的链表,或者一段反复探测的泥潭。 当输入可能很坏,或者你无法相信输入分布时,怎样用随机化把坏运气挡在门外。 确 阅读全文
posted @ 2026-05-27 11:55 Ofnoname 阅读(167) 评论(0) 推荐(0)
摘要: 很多概念都叫“哈希”:哈希表里的 hash,SHA-256 这样的密码学哈希,局部敏感哈希 LSH,一致性哈希,滚动哈希,Bloom Filter 里的多重哈希,甚至还有专门存密码用的 bcrypt、Argon2。它们名字相似,实际目标差得很远。 一个共同抽象可以写成:给定输入 \(x\),要设计哈 阅读全文
posted @ 2026-05-26 19:03 Ofnoname 阅读(19) 评论(0) 推荐(0)
摘要: 程序里经常会遇到一种看似朴素、实际很贵的问题:两个东西是不是一样? 它可能是两个字符串、两个文件、两个集合、一段文本里的子串,或者三个矩阵是否满足 \(A \cdot B = C\)。如果对象本身很大,尤其是在对象需要跨机器通信、被反复比较、以流式方式到达,或者比较结果只需要高概率可靠时,直接逐个字 阅读全文
posted @ 2026-05-26 18:30 Ofnoname 阅读(135) 评论(0) 推荐(0)
摘要: 石子合并大概是很多人学区间动态规划时遇到的第一道例题。题目很简单:一排石子,每次合并相邻两堆,代价是合并后的石子总数,问把所有石子合并成一堆的最小总代价。经典解法是设 \(\text{dp}[i][j]\) 为合并区间 \([i,j]\) 的最小代价,前缀和求出区间和 \(\text{cost}(i 阅读全文
posted @ 2026-05-25 16:16 Ofnoname 阅读(13) 评论(0) 推荐(0)
摘要: 矩阵乘法看起来太基础了,以至于很容易被当成一个已经“没有算法空间”的操作。两个 \(n \times n\) 矩阵相乘,按定义写三层循环,时间复杂度是 \(O(n^3)\): \[C_{ij} = \sum_{k=1}^{n} A_{ik}B_{kj} \]这个式子直接翻译成代码很自然:每个 \(C 阅读全文
posted @ 2026-05-24 21:52 Ofnoname 阅读(16) 评论(0) 推荐(0)
摘要: 最近点对是一个很典型的几何分治问题。题目本身很直接:给定平面上的 \(n\) 个点,找出欧氏距离最小的一对点。 暴力做法不难写,两层循环枚举所有点对,复杂度是 \(O(n^2)\)。当 \(n\) 只有几千时还可以接受,但如果 \(n\) 到了 \(10^5\) 量级,就必须换思路。 这个问题的经典 阅读全文
posted @ 2026-05-24 21:17 Ofnoname 阅读(19) 评论(2) 推荐(1)
摘要: 多项式乘法是一个很常见重要的问题。给两个多项式 \[A(x)=\sum_{i=0}^{n-1}a_i x^i,\qquad B(x)=\sum_{j=0}^{m-1}b_j x^j \]那么它们的乘积 \(C(x)=A(x)B(x)\) 的第 \(k\) 项系数是 \[c_k=\sum_{i+j=k 阅读全文
posted @ 2026-05-18 16:28 Ofnoname 阅读(211) 评论(0) 推荐(1)
摘要: 很多程序员第一次接触“搜索”,是在 LeetCode 上的全排列、组合、子集、N 皇后、数独、单词搜索这些题里。这些题做多了以后,我们很容易形成一套肌肉记忆:递归、选择、撤销选择、剪枝。 但搜索算法真正重要的地方,并不在递归本身。 递归只是遍历方式。搜索真正关心的是:如何把一个巨大的候选空间组织成一 阅读全文
posted @ 2026-05-10 23:07 Ofnoname 阅读(180) 评论(0) 推荐(0)
摘要: 编程时写整数乘法,通常我们不会太关心底层细节。a * b 写起来非常自然,好像一条语句就能瞬间完成。 对固定宽度整数来说,比如 32 位或 64 位整数,乘法通常确实可以由少量机器指令完成,成本可以近似看成常数。但如果是两个几千位、几万位甚至更大的整数相乘,情况就不一样了。此时 * 背后不再是一条简 阅读全文
posted @ 2026-05-09 18:28 Ofnoname 阅读(168) 评论(0) 推荐(0)
摘要: 在学习算法时,我们肯定会关注效率。于是我们会分析时间复杂度,比如 \(O(n)\)、\(O(n\log n)\)、\(O(n^2)\)。 但这只是算法分析的一半。另一半问题是:这个问题本身最快能做到多快?也就是说,在某个给定的计算模型下,不管你设计什么算法,它都不可能突破某个理论下界。 如果一个算法 阅读全文
posted @ 2026-05-02 18:19 Ofnoname 阅读(194) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 ··· 20 下一页