贾永琪的技术博客

【算法】树(三):BST 与中序——迭代三兄弟、立起来的二分,与双通道的满血收官

【算法】树(三):BST 与中序——迭代三兄弟、立起来的二分,与双通道的满血收官 摘要 树系列第三篇,也是收官篇。上半场 BST 子家族:LC98 凭记忆重写一次过(中序 + prev + 短路,验收带"父子全合法但整体不是 BST"的著名陷阱用例);LC230 第 K 小三版弧线——k-- 长错位置(动作位置课)→ 全量收集(被正名为对拍参照)→ 迭代版提前停(“栈在谁手里,停下的方式就是谁的风

从一条直线到大模型输出一个token(九):输出矩阵与多层堆叠

从一条直线到大模型输出一个token(九):输出矩阵与多层堆叠 建议先看:从一条直线到大模型输出一个token(八):残差连接与前馈网络 上一篇走完了单个 Block 的六步。这一篇把 Block 复制 32 份串起来——不同层的 Block 各学什么,2024-2025 各家大模型到底堆了多少层,然后用 6 个 token 实地观察"浅→中→深"到底改了什么——这是理解"下一个 token 如何

【算法】链表(二):链表上的双指针——变速、异链与定距,和一份路程账本

【算法】链表(二):链表上的双指针——变速、异链与定距,和一份路程账本 摘要 链表系列第二篇。数组转场链表时我说"快慢指针做过"——做到 LC19 才发现链表上的双指针是另一个世界:数组指针是下标(可以回头看),链表指针是节点地址(改了就丢),于是双指针在链表上长出了三种新形态。本篇四题:LC141 环形链表(变速双指针——快 2 慢 1 的恒定节拍;"快走 3 步行不行"的奇偶性论证;以及 Va

【算法】树(二):队列与祖先——BFS 骨架三配件、短路透传与合流

【算法】树(二):队列与祖先——BFS 骨架三配件、短路透传与合流 摘要 树系列第二篇。上半场 BFS:LC102 层序遍历立骨架(一次"DFS 硬凑层序"的失败尝试引出一堂 slice 值语义课——子函数里的 append 回不到调用者的 slice;正解是队列 + len 快照,“先冻结规模,再动队列”),然后一个骨架吃下三个配件:LC199 右视图(i == size-1)、LC103 锯齿

【算法】回溯算法(三):三记重锤与 N 皇后——记忆化、状态设计与三层漏斗

【算法】回溯算法(三):三记重锤与 N 皇后——记忆化、状态设计与三层漏斗 摘要 回溯系列第三篇,收官。上一篇以 LC842 验收"毕业",我以为真毕业了——接下来三记重锤锤醒了梦:记忆化的三次错位(417 万次调用 vs 176 次,缓存选择、缓存候选、只写不读一路踩过去)、排序被禁后的去重(层属性 vs 路径属性,usedThisLevel 不还原是精髓)、中间态失控(把 Go 的栈撑爆 1G

【算法】双指针与滑动窗口(二):滑动窗口——吃进、判定、吐出

【算法】双指针与滑动窗口(二):滑动窗口——吃进、判定、吐出 摘要 双指针系列第二篇,滑动窗口专题。三道题讲透"吃进、判定、吐出":LC3 无重复最长子串(最长型;从 DP 的"断链"惯性走到滑窗的"收缩",五版弧线的教训,以及重做时的一次架构升级——计数版把哨兵坑和窗口外旧出现坑整类消灭);LC209 长度最小的子数组(最短型;“移出前预判"与"破坏后记录"两种收缩写法;以及本文最值钱的一段——

【算法】动态规划第四篇:背包收官——min 哨兵、计数世界与组合排列分水岭

【算法】动态规划第四篇:背包收官——min 哨兵、计数世界与组合排列分水岭 摘要 DP 系列第四篇,背包三课的后两讲。LC322 零钱兑换(最值背包):一次翻出三个缺口——min 合并被赋值覆盖吃掉(覆盖病第三案)、哨兵 -1 在 min 世界传染(-1+1=0 冒充最优解,实测算出比数学下界还小的答案 15 < 20)、+dp[c] 的巧合依赖;沉淀出哨兵配对原则的进阶版:min 世界的哨兵必须

【算法】动态规划第六篇:状态机 DP——股票家族全集与三例副作用死刑

【算法】动态规划第六篇:状态机 DP——股票家族全集与三例副作用死刑 摘要 DP 系列第六篇,第 5 级状态机 DP 全记录。股票家族五题一网打尽:121(暴力 O(n²) 起步 → hold/cash 双状态机 + 前缀最小版双轨)、122(自创"落袋贪心"碰巧正确但无法论证,死刑于扩展性;状态机改一行)、188(k 次交易 = 状态加一层楼;j=0 地基层漏算导致"股票白送")、309(冷冻期

【算法】动态规划第七篇(终章):单词拆分 II——缓存结论的完全体,与两个系列的合龙

【算法】动态规划第七篇(终章):单词拆分 II——缓存结论的完全体,与两个系列的合龙 摘要 DP 系列第七篇,终章。LC140 单词拆分 II——回溯系列里三度交锋的老对手(417 万次调用、缓存候选词列表"一个数字都没差"、“缓存结论不缓存选择"的判据),带着六级 DP 的装备回来合龙。本篇三块内容:修复 can2[end](回溯只查"词匹配"不查"后缀可行性”——死路照样迈步,补上这一个条件,

从一条直线到大模型输出一个token(四):位置编码 RoPE

从一条直线到大模型输出一个token(四):位置编码 RoPE 建议先看:从一条直线到大模型输出一个token(三):隐藏层与嵌入 上一篇留下两个坑:嵌入矩阵不知道顺序、不知道上下文。这一篇填第一个坑——矩阵怎么"知道"每个词排在第几位。 1. 排列等变性:注意力天生是"位置盲" 先看一个反直觉的事实。 上一篇说过,后续所有层对矩阵的处理都是"逐行计算"——第 1 行算第 1 行的,第 3 行算第