题目要求返回元素和可被k整除的非空连续子数组数目;核心是利用前缀和同余性质:若两前缀和模k同余,则其间子数组和可被k整除;需用哈希表统计各余数出现频次,初始h[0]=1,遍历中累加sum并修正负数取模,更新答案。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从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的递归”,就不会默认你懂记忆化原理;看到“大三学生”,会规避研究生课才讲的线段树优化。
Gemini Notebook网页版是一款基于AI的智能笔记工具,其核心功能是让用户上传个人文档(如PDF、文本等),并以此为基础进行交互。它能针对你的资料进行总结、解答疑问、生成新内容,让信息处理更高效。该版本为在线使用,无需下载安装。
方法二:绑定真实调试行为
如果你已经写了部分代码但报错,把错误信息和你的代码片段一起放进提示词。例如:“我写了如下代码,运行时报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%以上的冗余信息。这步操作起来很简单,直接把不需要的部分列出来就行。










