游乐游手机版
首页/AI热点日报/热点详情

GPT-4 LeetCode解题能力评测

类型:热点整理2026-07-11
GPT4在LeetCode第102场双周赛中完成四题:简单题经一次错误修正后通过,中等模拟题一次通过,中等思维题无法纠正,困难模板题一次通过。模型擅长模板题与模拟题,但对隐含逻辑的思维题存在明显短板。

本教程基于一个真实测试案例,系统梳理了GPT-4在LeetCode第102场双周赛中的解题表现,完整覆盖了从简单题到困难题的全过程。我们将按照题目顺序逐一解析,深入分析GPT-4的能力边界,并提供实用提示与常见问题解答,帮助你更全面地理解大语言模型在算法问题上的潜力与局限。

0x0. 前言

GPT-4技术报告(https://cdn.openai.com/papers/gpt-4.pdf)的第4节展示了GPT-4的多项能力,在表格的最后三行特别呈现了GPT-4解答LeetCode题目的表现。本文基于这一兴趣点,探索GPT-4配合一个仅负责发出提示词的人类(即完全依赖GPT-4生成代码)能够取得怎样的实际效果。

为保证公平性,我们选取了LeetCode第102场双周赛(2023年4月15日)作为测试数据集。测试者全程只指挥GPT-4编写代码,自身不参与任何编码工作。

首先创建一个新的GPT-4对话:

小提示:测试时建议使用独立对话窗口,避免上下文干扰。每次失败后可以直接将错误信息反馈给GPT-4,让它自行调试修复。

0x1. 第一题(Easy)

第一题是一道简单级别的题目,描述如下:

我们将题目描述输入GPT-4:

GPT-4给出了一个回复,但输出格式不符合LeetCode要求。我们要求它调整格式:

提交后,LeetCode返回了错误信息。我们将错误案例反馈给GPT-4:

修正后再次提交,顺利通过:

  • 结果:首次提交出错,简单提示后修正,2次提交通过。
  • 关键点:GPT-4能够识别常见逻辑错误,但需要人类提供具体的错误信息来引导修正。

常见问题:如果GPT-4给出的代码格式不符合要求,该怎么办?
答案:直接要求它“按照LeetCode的格式输出完整的类定义,并包含必要的头文件”。也可以让它“仅输出代码,不需要任何解释”。

0x2. 第二题

第二题描述如下:

向GPT-4提问:

提交后:

一次性通过,仅1次提交即成功。

  • 小提示:对于模拟题模板题,GPT-4通常能够一次性正确解答。可以尝试先给它完整的题目描述,再让它自主编写代码。

0x3. 第三题

第三题是一道思维性较强的题目

向GPT-4提问:

GPT-4给出的方案看起来有些问题,但我们先将代码编译测试:

编译报错。将错误信息返回给GPT-4:

编译通过,但样例测试无法通过。加入更多提示后:

最终生成的代码仍然无法通过样例测试。

  • 结果:无法通过提示引导GPT-4给出正确答案,未通过
  • 局限性:对于需要理解隐含逻辑设计精巧策略的题目,GPT-4容易“胡编乱造”,且难以通过简单提示进行纠正。

常见问题:为什么第三题GPT-4无法解决?
答案:该题涉及树中堂兄弟节点的值替换,需要正确理解“相同深度但不同父节点”这一关键约束条件。GPT-4未能准确建模树的结构,生成的算法逻辑存在错误。这类思维型题目目前仍然是大语言模型的短板。

0x4. 第四题

第四题是一道图论模板题

GPT-4给出的答案能够通过样例测试:

提交后直接通过:

完整代码如下:

class Graph {
public:
    Graph(int n, vector>& edges) {
        this->n = n;
        for (const auto& edge : edges) {
            adjList[edge[0]].push_back({edge[1], edge[2]});
        }
    }
    
    void addEdge(vector edge) {
        adjList[edge[0]].push_back({edge[1], edge[2]});
    }
    
    int shortestPath(int node1, int node2) {
        vector dist(n, INT_MAX);
        dist[node1] = 0;
        priority_queue, vector>, greater>> pq;
        pq.push({0, node1});
        while (!pq.empty()) {
            int currNode = pq.top().second;
            int currDist = pq.top().first;
            pq.pop();
            if (currNode == node2) return currDist;
            if (currDist > dist[currNode]) continue;
            for (const auto& neighbor : adjList[currNode]) {
                int nextNode = neighbor.first;
                int edgeCost = neighbor.second;
                if (currDist + edgeCost < dist[nextNode]) {
                    dist[nextNode] = currDist + edgeCost;
                    pq.push({dist[nextNode], nextNode});
                }
            }
        }
        return -1;
    }
private:
    int n;
    unordered_map>> adjList;
};
  • 结果1次提交通过
  • 关键点模板题(如Dijkstra算法)是GPT-4的强项,即使被标记为困难级别也能一次通过,前提是模型在训练数据中见过类似的结构模式。

小提示:对于模板题,可以直接要求GPT-4“使用Dijkstra算法实现”,效果会更理想。但需要注意检查它是否使用了正确的数据结构(例如优先队列)。

0x5. 总结与展望

虽然一次周赛的几道题目不足以得出全面结论,例如本次周赛的困难题实际上是一道板子题,算不上真正的难题(或许将第三题和第四题的顺序交换会更合理)。但GPT-4的表现已经大幅超出预期

本次测试四道题的表现汇总如下:

  • 题目1(简单):首次提交出错,简单提示后修正,2次提交通过
  • 题目2(中等):1次提交通过
  • 题目3(中等):无法通过提示引导GPT-4给出正确答案,未通过
  • 题目4(困难):1次提交通过

不得不承认,GPT-4在模拟题、模板题方面已经展现出相当不错的理解与处理能力。可以预见,在更强大的数据和更大规模模型的加持下,未来大语言模型的解题能力有望超越大多数人类。但是,从提升算法能力的角度而言,我不建议任何读者使用GPT-4来刷LeetCode。因为依赖AI完成题目会削弱独立思考与问题抽象能力的训练,而后者才是算法学习的核心价值所在。

常见问题:GPT-4能替代人类刷LeetCode吗?
答案:不能。目前GPT-4仅对见过类似模式的题目表现良好,对于需要创新思维或精细推理的题目几乎无效。更重要的是,刷题本身是为了锻炼思维能力,使用AI辅助会失去这一核心意义。

来源:https://m.elecfans.com/article/2070870.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。