使用GPT4做Leetcode第 102 场双周赛

news2024/12/24 8:44:05

虽然一次周赛的几个题目说明不了太多问题,比如这个周赛的Hard题目就是板子题,算不上Hard,也许把第三题和第四题的顺序换一下比较合适。但是,GPT4的表现已经严重超出了我的预期。对于这次周赛的四个题目,GPT4的表现如下:题目1: 错了一次,简单提示后修正了错误,2A了。题目2: 1A。题目3: 无法通过提示的方法让GPT4做对,WA。题目4: 1A。不得不说,GPT4在模拟,模板题方面已经具备了不错的理解和处理能力,感觉在更强大的数据和更大模型的加持下以后大语言模型的做题能力能赶上一大半人类。| 从提升算法能力的角度来说,我不建议任何读者使用GPT4来做Leetcode。

0x0. 前言

GPT4论文(https://cdn.openai.com/papers/gpt-4.pdf)的第4节展示了GPT4的各种能力,在表格的最后三行展示了GPT4做Leetcode的能力,我比较感兴趣,所以本文打算来探索一下这种能力。看一下GPT4配合一个只发出prompt的人的表现如何。

在这里插入图片描述
为了公平起见,我这里选取了LeetCode第 102 场双周赛(https://leetcode.cn/contest/biweekly-contest-102/)也就是2023年4月15日的这一场。我打算用GPT4来尝试解开这场周赛的4道题目,但是不一定能都解开,只是测试一下GPT4的写算法的能力。

我将全程只指挥GPT4写代码来解题,我自己不做任何的Coding工作。

先建立一个GPT4的新对话:

在这里插入图片描述

0x1. 第一题

第一题是个Easy的题目,描述如下:

在这里插入图片描述
接下来,我们先把题面输入到GPT4。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
GPT4给了我们一个回复,感觉挺对的,但是这种格式不能让Leetcode直接通过,我们再让GPT4更新一下格式:

在这里插入图片描述
在这里插入图片描述
接下来就是紧张的时刻,我们把这个类的代码提交给Leetcode。

在这里插入图片描述
结果错误,Leetcode返回了错误的例子。我们把这个错误的例子再返回给GPT4让它自己debug。

在这里插入图片描述
我们把它修正后的代码提交给Leetcode。

在这里插入图片描述
现在GPT4顺利通过了第一道题目。

0x2. 第二题

在这里插入图片描述

我们问一下GPT4
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们提交给Leetcode试试。

在这里插入图片描述
直接通过,GPT4真有点强。

0x3. 第三题

在这里插入图片描述
问问GPT4:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个问题感觉还是比较麻烦的,GPT4给出的方案感觉一眼假,不过我们不妨运行一下它给的代码。
在这里插入图片描述
我们发现编译就报错了。我们返回这个结果给GPT4:

在这里插入图片描述
在这里插入图片描述
现在确实可以编译了,但我们发现这个程序连样例都无法通过。显然,GPT4根本没有理解这道题目的意思,结果倾向于是“胡说八道”。再加强一些提示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后GPT4输出的代码仍然无法通过样例。这道题,GPT4应该是无能为力了。

从这道题目,我们可以看到GPT4的局限性,那就是对于这种思维性的题目,GPT4很难理解这道题目暗含的意思,设计的算法也是错误的。

题解可以参考:https://leetcode.cn/problems/cousins-in-binary-tree-ii/solution/bfssuan-liang-ci-pythonjavacgo-by-endles-b72a/

0x4. 第4题

接下来我们看一下第4题,这个题是比较模板的题,我们看一下GPT4能否解开。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

我们来看一下GPT4给出的答案能否通过样例。

在这里插入图片描述
是可以通过给出的样例的。我们提交试试。

在这里插入图片描述
这道题GPT4的完整代码实现如下:

class Graph {
public:
    Graph(int n, vector<vector<int>>& edges) {
        this->n = n;
        for (const auto& edge : edges) {
            adjList[edge[0]].push_back({edge[1], edge[2]});
        }
    }
    
    void addEdge(vector<int> edge) {
        adjList[edge[0]].push_back({edge[1], edge[2]});
    }
    
    int shortestPath(int node1, int node2) {
        vector<int> dist(n, INT_MAX);
        dist[node1] = 0;

        priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> 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<int, vector<pair<int, int>>> adjList;
};

虽然这道题很难说是Hrad的难度,但1A真的太吓人了。。。

0x5. 总结+预测

虽然一次周赛的几个题目说明不了太多问题,比如这个周赛的Hard题目就是板子题,算不上Hard,也许把第三题和第四题的顺序换一下比较合适。但是,GPT4的表现已经严重超出了我的预期。

对于这次周赛的四个题目,GPT4的表现如下:

题目1: 错了一次,简单提示后修正了错误,2A了。
题目2: 1A
题目3: 无法通过提示的方法让GPT4做对,WA。
题目4: 1A。

不得不说,GPT4在模拟,模板题方面已经具备了不错的理解和处理能力,感觉在更强大的数据和更大模型的加持下以后大语言模型的做题能力能赶上一大半人类。| 从提升算法能力的角度来说,我不建议任何读者使用GPT4来做Leetcode。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/462420.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

说走就走的接口自动化测试脚本:快速提高测试效率的秘密武器

目录 摘要&#xff1a; 环境准备 编写测试用例 运行测试脚本 总结 摘要&#xff1a; 作为一名测试工程师&#xff0c;我们常常需要进行接口测试&#xff0c;目的是验证接口是否符合规范并且稳定可靠。然而&#xff0c;手动测试难免会出现疏漏和人为错误&#xff0c;因此…

K_A35_003 基于STM32等单片机采集矩阵按键模块值 串口与OLED0.96双显示

K_A35_003 基于STM32等单片机采集矩阵按键模块值 串口与OLED0.96双显示 所有资源导航一、资源说明二、基本参数引脚说明 三、驱动说明模块工作原理:对应程序: 四、部分代码说明1、接线引脚定义1.1、STC89C52RC矩阵按键模块1.2、STM32F103C8T6矩阵按键模块 五、基础知识学习与相…

把一个长方形平均分为4份,我想了几十种方法,不服来挑战

这是学习笔记的第 2455篇文章 这个事情的源头是在前几天哄孩子睡觉前&#xff0c;我和她聊分数的事情&#xff0c;一般为了便于理解我会拿披萨来举例&#xff0c;比如把一个披萨分成2份&#xff0c;分成3份&#xff0c;分成4份等&#xff0c;似乎顺着圆心我们可以想到既定的方案…

2023/4/25总结

刷题&#xff1a; 第一周任务 - Virtual Judge (vjudge.net) 1.这一题的思路就是先排除前面和后面相等的&#xff0c;然后找到不等的情况&#xff0c;不等情况的下标开始前后都走&#xff0c;看看是不是和b数组构成了一个升序数组即可。 #include<stdio.h> #define Ma…

50+常用工具函数之xijs更新日志(v1.2.4)

xijs 是一款开箱即用的 js 业务工具库, 聚集于解决业务中遇到的常用函数逻辑问题, 帮助开发者更高效的开展业务开发. 接下来就和大家一起分享一下v1.2.4 版本的更新内容以及后续的更新方向. 1. dom分类添加xss函数 该模块主要由 Kevin 贡献, 具体介绍如下: 使用方式: import { …

游戏有延迟?如何获得一个好的Ping

在多人游戏世界中,玩家要想获得良好的游戏体验,需要做很多事情——尤其是如果这种良好的体验取决于你的想法。 在线多人游戏,如FPS(第一人称射击游戏)、赛车和一些MMORPG类型的游戏,尤其取决于玩家对游戏反馈的及时有效反应。这个反馈和反应链有很多环节,其中一个环节是…

【Python】matplotlib画散点图,并根据目标列的类别来设置颜色区间(含源代码及参数解释)

最近在进行绘图时&#xff0c;遇到了matplotlib画散点图&#xff0c;并根据目标列的类别来设置颜色区间的问题&#xff0c;但是实现的过程较为艰辛。 文章目录 一、数据准备二、第一次尝试&#xff08;失败及其原因&#xff09;2.1 失败2.2 原因 三、第二次尝试&#xff08;成功…

详解客户关系管理系统

一、客户关系管理系统的重要性 客户关系管理系统&#xff0c;是指利用软件、硬件和网络技术&#xff0c;为企业建立一个客户信息收集、管理、分析和利用的信息系统。以客户数据的管理为核心&#xff0c;记录企业在市场营销和销售过程中和客户发生的各种交互行为&#xff0c;以…

Multisim电路仿真与实验:包含连续时间系统的模拟、周期信号频谱分析、组合逻辑电路:竞争冒险、数字锁

Multisim电路仿真与实验&#xff1a;包含连续时间系统的模拟、周期信号频谱分析、组合逻辑电路&#xff1a;竞争冒险、数字锁 文章目录 Multisim电路仿真与实验&#xff1a;包含连续时间系统的模拟、周期信号频谱分析、组合逻辑电路&#xff1a;竞争冒险、数字锁连续时间系统的…

JVM内存区域划分,类的加载过程 以及 双亲委派模型总结

目录 JVM内存区域划分 Java类的加载过程 双亲委派模型 JVM内存区域划分 JVM中的内存区域共划分为五大部分&#xff0c;分别为虚拟机栈、堆、程序计数器、本地方法栈和方法区&#xff0c;如下边这张图所示&#xff1a; 其中&#xff0c;每个内存区域主要存放的数据及功能如下…

Visual Studio C# WinForm开发入门(4):概述

目录 一.Winform入门1.WinForm项目结构2.窗口设计与控件布局3.窗口事件4.时间显示器小练习 二.WinForm布局开发1.手动布局解决自适应问题2.WinForm布局属性3.WinForm布局器 三.WinForm常用控件1.界面展示2.实体类 Student(封装信息)3.逻辑事件代码Form.cs 四.图片框与项目资源1…

大数据电商数仓相关脚本

文章目录 前言一、群起集群1. sc 脚本2. cluster 脚本3. myhadoop 脚本4. zk.sh 脚本5. kf.sh 脚本6. f1.sh 脚本7. f2.sh 脚本 二、简便使用脚本1. xsync 脚本2. jpsall 脚本3. xcall.sh 脚本4. lg.sh 脚本 三、数据传输相关脚本1. mysql_to_hdfs.sh 脚本2. hdfs_to_ods_db.sh…

《JavaEE初阶》HTTP协议和HTTPS

《JavaEE初阶》HTTP协议和HTTPS 文章目录 《JavaEE初阶》HTTP协议和HTTPSHTTP协议是应用层协议:使用Fiddler抓取HTTP请求和响应:Fiddler的下载和基本使用:Fiddler的中间代理人身份:其他抓包工具: 先简单认识HTTP请求与HTTP响应:HTTP请求:HTTP响应: HTTP请求详解:首行&#xff1…

分享10个精美可视化模板,解决95%的大屏需求!

前段时间和朋友一起喝茶&#xff0c;我吐槽着excel表格做报表的繁琐&#xff0c;他惊讶的问我竟然不知道大屏模板这种东西&#xff0c;说是直接套用数据就可以&#xff0c;我震惊的同时吃下了这个安利。 回来之后&#xff0c;我好好研究了一番这个叫可视化大屏的“新鲜玩意儿”…

模块化编程原理示意图--CommonJS 模块编程--ES6 模块编程思路分析/图解--三种导出形式--全部代码示例

目录 模块化编程 基本介绍 模块化编程原理示意图 模块化编程分类 CommonJS 模块编程 介绍 应用实例 1. 需求说明 2. 思路分析/图解 3. 代码实现 function.js use.html use.js ES6 模块编程 介绍 需求说明 思路分析/图解 代码实现 common.js use_common.js …

MySQL入门到精通——进阶篇(基础篇——进阶篇——运维篇)本文以MySQL8.0版本以上为例

文章目录 前言MySQL——进阶篇一、存储引擎1.存储引擎-MySQL体系结构2.存储引擎-简介3.存储引擎-InnoDB介绍4.存储引擎-MyISAM和Memory5.存储引擎-选择 二、索引1.索引-概述2.索引-结构2.1.索引-结构-介绍2.2.索引-结构-Btree2.3.索引-结构-Btree2.4.索引-结构-hash 3.索引-分类…

【Java-02】深入理解关键字和代码块

1 关键字 2 代码块 1 Java中的关键字 1.1 static关键字 static关键字 : 静态的意思 , 可以修饰变量 , 也可以修饰方法 , 被static修饰的成员 , 我们叫做静态成员 static特点 : 静态成员被所类的所有对象共享随着类的加载而加载 , 优先于对象存在可以通过对象调用 , 也可以通…

学习系统编程No.23【信号实战】

引言&#xff1a; 北京时间&#xff1a;2023/4/23&#xff0c;最近学习状态不怎么好&#xff0c;总是犯困&#xff0c;没精力的感觉&#xff0c;可能是病没有好彻底的原因&#xff0c;也可能是我内心因为生病而认为摆烂理所应当&#xff0c;反正最后导致摆烂&#xff0c;课现在…

JetpackCompose从入门到实战学习笔记14——Coli的简单使用

JetpackCompose从入门到实战学习笔记14——Coli的简单使用 1.简介&#xff1a; Coil 是一个 Android官方出的配合Jetpack的图片加载库&#xff0c;通过 Kotlin 协程的方式加载图片。 优点如下&#xff1a; 更快: Coil 在性能上有很多优化&#xff0c;包括内存缓存和磁盘缓存…

体验了多款国产类ChatGPT产品后,我选择了道合顺的【ChatIC】

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后端的开发语言A…