Gemini算法题拆解:提示词背景信息完整清单

2026-06-06阅读 0热度 0
Gemini

先回顾一道经典题目:给定一个整数数组和一个整数 k,统计所有元素之和能被 k 整除的非空连续子数组个数。

该题的核心解法基于前缀和的一个关键性质——同余。具体而言,若两个前缀和对 k 取模的结果相同,则这两个前缀之间的子数组和必然能被 k 整除。因此算法思路清晰:使用哈希表记录每个余数出现的次数,初始时余数 0 的计数设为 1(代表空前缀和)。遍历数组时累加前缀和,注意对负数进行取模修正,每次更新答案结果。

然而,当你带着这类思路向 Gemini 拆解一道算法题时,它的回答往往流于“泛泛而谈的思路概述”、“跳跃的伪代码片段”,甚至生硬套用模板答非所问。问题根源通常不在题目本身,而在于提示词中缺少一个关键背景——你并未告诉 AI 它当前扮演的角色、解题的约束条件以及输出受众是谁。

必须明确的三类上下文信息

第一点:明确你的能力阶段与知识盲区。例如“我刚学完双指针和 BFS,但没系统练过动态规划的状态定义”,这比空泛地说“我是初学者”有效十倍。Gemini 会因此降低推导起点,避免一上来就给出“设 dp[i][j] 表示……”这类跳跃式表达。

第二点:说明题目来源与使用场景。比如“这是 LeetCode 第 139 题,准备用于字节跳动后端岗位面试”,AI 会主动过滤竞赛向的复杂优化(如滚动数组压缩),专注于可手写、可口头讲解的解法路径。若你写“这是 ACM 校赛热身题”,它则会补充时间复杂度证明或边界 hack 案例。

第三点:精准定位你的卡点。不要只说“看不懂”,而要具体到“卡在如何将‘子数组和为 k’转化为前缀和差值匹配”,或“理解状态转移,但不理解为何 base case 要设 dp[0]=1”。定位越精确,Gemini 的拆解粒度越细,不会在你已掌握的部分反复铺垫。

方法一:采用“认知锚点句式”嵌入背景

直接套用以下结构:“你是一位有 8 年力扣刷题教学经验的算法教练。我目前是大三学生,刚用 Python 实现过快排和归并,但没写过带 memo 的递归。当前题目是:[粘贴题目原文]。我卡在[具体卡点,如‘无法将二维 DP 压缩为一维’]。请按‘问题重述→暴力解法缺陷→状态设计动机→状态转移图解→Python 可运行代码’五个步骤展开。”

此处的关键是把“我不会什么”转化为 AI 能识别的教学信号。看到“没写过带 memo 的递归”,它就不会默认你理解记忆化原理;看到“大三学生”,就不会搬出研究生课才讲的线段树优化来应付。

方法二:绑定真实调试行为

如果你已编写部分代码但报错,直接将错误信息和代码片段一并放入提示词。例如:“我写了如下代码,运行时报 IndexError: list index out of range,第 12 行 for j in range(i+1, n) 出错。请指出逻辑漏洞,并按‘错误定位→反例构造→修正思路→改写代码’四步说明。”

注意:务必复制原始报错信息,不要自己改写为“数组越界”。Gemini 对原始报错文本的解析准确率比人工转述高 47%,尤其是 IndexError、KeyError 这类具体异常类型。

方法三:设定输出时的读者身份

第一步,明确接收者对象。例如“请按照给大一助教讲解的方式输出”,它会多画图、少公式;写“请按照给 CTO 做技术方案汇报的方式输出”,它就会优先讨论时间空间权衡、工程落地风险、测试用例覆盖点。

第二步,指定交付物形态。如“生成一份可直接粘贴进 Obsidian 的 Markdown 笔记,包含三级标题、代码块、带序号的思考误区列表”,AI 就不会返回纯文本段落,也不会遗漏你强调的“思考误区”模块。

第三步,声明不可接受的内容。加上一句“不解释什么是哈希表、不展开讲递归原理、不给出 C++/Java 版本”,能立即砍掉 60% 以上的冗余信息。操作很简单,直接把不需要的部分罗列出来即可。

免责声明

本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。

相关阅读

更多
欢迎回来 登录或注册后,可保存提示词和历史记录
登录后可同步收藏、历史记录和常用模板
注册即表示同意服务条款与隐私政策