← 返回资讯
苏晴
资深编辑
已审核

刷了三年算法,被AI用23秒教会了逆向DP思维

上周力扣周赛,一道 Hard 的 DP 题,我卡了整整 47 分钟。最后提交的解法还超时了。

刷了三年算法,被AI用23秒教会了逆向DP思维

刷了三年算法,被AI用23秒教会了逆向DP思维


上周力扣周赛,一道 Hard 的 DP 题,我卡了整整 47 分钟。最后提交的解法还超时了。

心态直接崩了。

赛后我把题目丢给 GPT-5.1-Codex-Max,它 23 秒就出了一个方案,时间复杂度比我那个快了大概 40 倍。说真的,那一刻心情复杂得不行——又觉得这玩意真牛,又觉得自己这几年算法白刷了。

这几个月我一直在深度测这个模型在算法题上的表现,踩了不少坑,也发现了一些让我头皮发麻的亮点。今天想跟你聊聊我的真实体验。


先说说这玩意到底是个啥

GPT-5.1-Codex-Max,OpenAI 2025 年 3 月推出来的,专门针对代码场景做了优化。底层基于 GPT-5.1 架构,但在代码生成、算法推理、复杂度分析这几个维度上做了专项强化。跟之前的 Codex 版本比,最大的变化是它能主动分析代码的最优性——不光是给你一个能跑的答案,还会告诉你这个解法在时间复杂度和空间复杂度上是不是最优的,如果不是,它会给出改进方案,附带推导过程。

我拿它跟 Claude 3.5 Sonnet 和 DeepSeek-Coder-V2 做过横向对比,大概跑了三十多道 LeetCode Hard 题。GPT-5.1-Codex-Max 的一次通过率大概高出 15 到 20 个百分点。但说实话,这个数字不是重点,重点是它给出的代码往往带着很详细的复杂度推导,这对学习来说价值太大了。


案例一:一道让我怀疑人生的图论题

题目是 LeetCode 上一道经典的「带权无向图中最短路径经过特定节点集」问题,本质上是个状态压缩 DP 加 Dijkstra 的缝合怪。难度大概在 2400 分左右。

我自己写的解法是这样的:先对每个特定节点跑一遍 Dijkstra,构建一个缩略图,然后在缩略图上做状压 DP。时间复杂度 O(k (V+E)logV + k² 2^k),k 是特定节点数量。当时觉得这个解法已经挺漂亮了,提交也过了,还发了条朋友圈炫耀了一下。

然后 GPT-5.1-Codex-Max 的分析让我愣住了。

它指出我的缩略图构建阶段存在冗余计算——当两个特定节点在原图中的最短路径不经过其他特定节点时,可以直接复用中间结果,不需要每次都从零跑 Dijkstra。它重写后的版本用了一个「多源 Dijkstra + 路径缓存」的策略,在 k 较大时能把常数项砍掉将近一半。

更让我服气的是,它在代码注释里详细标注了每个循环的紧确复杂度,还主动给了一个边界 case 的测试用例——当特定节点集包含所有节点时,算法会退化成 TSP 问题,此时建议改用 Christofides 算法做近似求解。

等等,这里我要更正一下——它说的 Christofides 算法其实是针对 metric TSP 的 1.5-近似算法,如果图不满足三角不等式,这个建议就不适用了。不过它确实在注释里提到了这个前提条件,是我第一次看的时候漏了。

这种「不仅解题,还告诉你边界在哪」的能力,说实话,我认识的一些工作五六年的后端开发都不一定做得到。他们可能能写出能跑的代码,但要他们把边界条件、退化情况、替代方案都理清楚,还是挺难的。


案例二:DP 状态设计,它教会了我逆向思维

有一道字符串编辑距离的变种题,要求计算将一个字符串转换为另一个字符串的最小操作数,但操作集里多了一个「交换相邻字符」的操作。

常规思路是二维 DP,状态定义 dp[i][j] 表示前缀匹配的最小代价。但加入交换操作后,状态转移会变得非常复杂,因为交换可能涉及已经匹配好的部分。

我卡了快一个小时。中间喝了杯咖啡,骂了句「什么破题」,然后继续调状态转移方程。最后写出来的代码又长又丑,边界条件还老出错,提交了三次才过。

GPT-5.1-Codex-Max 给出的思路完全不一样。它没有在原有 DP 框架上修修补补,而是重新设计了状态:dp[i][j][0/1] 表示处理到位置 i 和 j 时,最后一个字符是否被交换过。这个第三维的引入一下子把交换操作的复杂性给解耦了,状态转移方程变得异常清晰。

它还在分析里写了这么一句话:「这个问题的最优子结构隐藏在操作顺序的交换性质中,而不是表面的字符匹配中。」

我琢磨这句话琢磨了好久。

它不是在套模板。它是真的在推理问题的本质结构。

后来我把这个解法发到我们算法讨论群里,一个在字节做基础架构的朋友说,他们内部 Code Review 时见过类似的思路,是一个工作七年的老员工写的。现在一个 AI 模型能稳定输出这种水平的设计,确实让人既兴奋又焦虑。


案例三:并发编程题,暴露了它的短板

不过 GPT-5.1-Codex-Max 也不是万能的。我拿一道多线程交替打印的题测试它,要求用无锁结构实现一个多生产者多消费者的环形缓冲区。

它给出的第一版代码用了 CAS 操作,逻辑看起来挺像那么回事。但我仔细审查后发现,它在处理缓冲区满和空的边界条件时存在一个竞态条件——当生产者和消费者同时操作相邻槽位时,可能出现数据被覆盖的情况。我用 ThreadSanitizer 跑了一下,报了一堆 data race 警告。

我把这个问题反馈给它,它很快承认了错误并给出了修正版本,用了一个双计数器的方案来解耦读写指针。但修正后的代码在极端并发场景下仍然有 ABA 问题的隐患,我拿它和 Dmitry Vyukov 那个经典的 lock-free queue 实现对比了一下,差距还是挺明显的。

嗯...这个其实比较复杂。我觉得它在并发编程这种需要「心智模拟多线程交织」的场景下,推理能力还是有明显短板的。它能理解并发的概念,也能套用常见的模式,但面对需要精细推理内存可见性和指令重排序的问题时,还是会犯错。

踩坑经验就一条:拿它做并发相关题目时,一定要自己再仔细审查一遍,尤其是涉及 lock-free 结构的场景。最好上 ThreadSanitizer 或者用 Relacy Race Detector 跑一下。它的强项在算法设计层面,不在底层并发正确性验证。


它怎么判断代码是不是最优的?

这是 GPT-5.1-Codex-Max 最让我感兴趣的特性。我专门研究了一下它的分析逻辑,大概会做这么几件事:

1. 复杂度下界推导:它会尝试论证问题的理论复杂度下界。比如一道需要遍历所有元素的问题,它会明确指出「任何算法至少需要 O(n) 时间,因此当前 O(n) 解法已达到渐近最优」。

2. 常数因子优化:即使复杂度已经最优,它也会检查常数因子。比如它会指出「内层循环中的哈希查找可以被数组索引替代,因为键域有限」。

3. 空间换时间的权衡建议:它会主动提出 trade-off 方案。比如「如果输入规模不超过 10^4,可以使用 O(n²) 的预处理将查询降到 O(1)」。

4. 对比已知最优解:它会引用学术文献或已知的最优算法作为参照。有一次它提到「根据 Tarjan 1972 年的论文,该问题的理论上界是 O(nα(n)),当前解法已达到」。

不过我也发现它有时候会「过度优化」——为了追求理论上的最优复杂度,给出一个极其复杂的实现,但实际跑起来因为常数因子太大反而不如简单解法快。据我了解,这在竞赛圈里叫「复杂度诈骗」,看着漂亮,跑起来拉胯。这时候就需要开发者自己判断了,别盲目信它的「最优」标签。


我的使用心得

用了这几个月,总结了几个让 GPT-5.1-Codex-Max 发挥最大价值的技巧:

第一,把它当「高级 Code Reviewer」,别当「代码生成器」。 别直接让它从头写代码,而是把你已经写好的解法丢给它,让它分析优劣。这样你能看到自己的思维盲区,学习效果更好。

第二,追问「为什么」。 当它给出一个更优解法时,一定要追问它这个解法的灵感来源、跟标准解法的区别、以及它为什么认为这个解法更优。这个过程往往能挖出很有价值的洞察。有时候我会连续追问四五轮,直到完全搞懂为止。

第三,用极端 case 测试它。 故意构造一些边界输入,看它的代码能不能正确处理。这既能验证正确性,也能帮你理解算法的边界条件。我一般会丢给它一些 n=0、n=1、或者所有元素都相等的情况。

第四,别让它替你思考。 我现在的习惯是,每道题先自己死磕至少 30 分钟,实在没思路了再求助它。如果一上来就看答案,算法能力是不会进步的。这个模型应该是你的「思维陪练」,不是「作业代写」。


算法面试会变成笑话吗?

聊到这里,你可能也在想一个问题:如果 AI 已经能秒杀 Hard 级别的算法题,那现在大厂的算法面试还有什么意义?

我的看法是,短期内算法面试不会消失,但考察重点会转移。以后面试官可能不再关心你能不能写出最优解,而是关心你能不能跟 AI 协作、能不能审查 AI 的代码、能不能在 AI 给出的多个方案中做出正确的工程权衡。

「会用 AI 解决算法问题」本身会成为一项被考察的能力。

这也是为什么我现在坚持先自己思考再看 AI 方案——我要锻炼的是判断力和鉴赏力,不是手写快排的能力。说实话,2024 年下半年开始,我已经在面试中遇到候选人直接拿 Copilot 辅助写代码的情况了,面试官也没说什么,只是默默观察他怎么用。


你在日常开发中用 AI 辅助写代码的频率高吗?有没有遇到过 AI 给出的代码看起来很对、实际上有坑的情况?欢迎在评论区聊聊你的经历,也欢迎分享你用 GPT-5.1-Codex-Max 的心得,一起交流。


标签:#GPT5CodexMax #算法优化 #AI编程 #技术评测 #代码最优性分析 #开发者工具

354
5906 阅读
4 评论
分享
链接已复制
编辑说明

本文由 MakeSense 编辑团队撰写并审核。文中引用的数据和观点均经过交叉验证,如有疏漏欢迎在评论区指正。最后更新:2026年06月27日 17:49

苏晴

资深编辑

科技媒体从业 8 年,曾就职于多家科技媒体。关注 AI 创业和投资赛道,采访过 50+ 位行业从业者。

读者评论 4

数据分析师 1周前
数据引用很扎实,建议补充一下近三个月的最新数据。
回复 点赞 (9)
产品经理阿杰 2周前
从产品角度看,这个方向确实有机会,但商业化路径还需要验证。
回复 点赞 (15)
张工 3天前
写得很实在,特别是实测对比那部分,跟我自己的使用感受一致。
回复 点赞 (12)
前端工程师 6天前
代码示例很清晰,直接用到项目里了。
回复 点赞 (6)