AI 工具提升刷题效率:一场为期四周的对照实验报告
AI 工具提升刷题效率一场为期四周的对照实验报告一、刷题效率到底能不能被 AI 提升——实验设计的出发点用 ChatGPT 刷题已经是公开的秘密但很少有人认真量化过 AI 工具到底能提升多少效率。是 10% 还是 300%提升的是做题速度还是理解深度有没有可能反而降低了学习效果——因为看 AI 题解太容易自己思考的时间变少了这些问题不是靠直觉能回答的。本文记录了一场为期四周的对照实验两组水平相近的刷题者一组纯手动刷题另一组使用 AI 辅助工具包括 AI 提示、代码审查、复杂度验证对比两组的做题数量、首次 AC 率、知识留存率等指标。二、实验设计与数据采集架构2.1 实验变量与控制维度控制组实验组刷题平台LeetCodeLeetCode每日刷题时间2 小时2 小时题目来源按标签随机按标签随机同组题目AI 工具禁止使用允许使用 ChatGPT / Claude题解查看只看官方题解AI 辅助 官方题解编程语言PythonPython控制变量题目难度分布相同Easy:Medium:Hard 2:5:3刷题时间相同编程语言相同。唯一差异是是否使用 AI 工具。2.2 数据采集指标graph TD A[数据采集维度] -- B[效率指标] A -- C[质量指标] A -- D[留存指标] B -- B1[每日做题数量] B -- B2[首次 AC 耗时] B -- B3[提交次数] C -- C1[首次 AC 率] C -- C2[代码通过率] C -- C3[复杂度达标率] D -- D1[一周后重做正确率] D -- D2[同类型新题正确率] D -- D3[知识迁移得分]2.3 AI 辅助的使用规范实验组使用 AI 工具时遵循以下规范避免直接抄答案提示模式只向 AI 描述思路卡点不直接要代码审查模式先自己写代码再让 AI 审查边界条件验证模式自己分析复杂度后让 AI 验证是否正确禁止模式不允许直接让 AI 生成完整题解代码三、实验数据与核心代码3.1 数据采集与统计模块from dataclasses import dataclass, field from datetime import date from typing import Optional dataclass class DailyRecord: 每日刷题记录。 record_date: date group: str # control 或 experiment problems_attempted: int # 尝试题目数 problems_ac: int # AC 题目数 avg_time_to_ac: float # 平均首次 AC 耗时分钟 avg_submissions: float # 平均提交次数 complexity_correct_rate: float # 复杂度分析正确率 dataclass class RetentionRecord: 知识留存测试记录。 test_date: date group: str redo_correct_rate: float # 重做正确率 new_type_correct_rate: float # 同类型新题正确率 migration_score: float # 知识迁移得分0-100 class ExperimentAnalyzer: 实验数据分析器。 计算各指标的均值、标准差和统计显著性。 def __init__(self): self.daily_records: list[DailyRecord] [] self.retention_records: list[RetentionRecord] [] def add_daily(self, record: DailyRecord) - None: 添加每日记录。 self.daily_records.append(record) def add_retention(self, record: RetentionRecord) - None: 添加留存记录。 self.retention_records.append(record) def compute_group_stats( self, group: str, metric: str ) - dict[str, float]: 计算指定组别的某项指标统计量。 返回均值、标准差、样本量。 if metric retention: values [ r.redo_correct_rate for r in self.retention_records if r.group group ] else: attr_map { problems_ac: problems_ac, avg_time: avg_time_to_ac, submissions: avg_submissions, complexity: complexity_correct_rate, } attr attr_map.get(metric, problems_ac) values [ getattr(r, attr) for r in self.daily_records if r.group group ] if not values: return {mean: 0.0, std: 0.0, n: 0} n len(values) mean sum(values) / n variance sum((v - mean) ** 2 for v in values) / n return {mean: mean, std: variance ** 0.5, n: n}3.2 统计显著性检验import math def cohens_d(group_a: list[float], group_b: list[float]) - float: 计算 Cohens d 效应量。 |d| 0.2微小效应 0.2 |d| 0.5小效应 0.5 |d| 0.8中等效应 |d| 0.8大效应 n_a, n_b len(group_a), len(group_b) if n_a 0 or n_b 0: return 0.0 mean_a sum(group_a) / n_a mean_b sum(group_b) / n_b var_a sum((v - mean_a) ** 2 for v in group_a) / n_a var_b sum((v - mean_b) ** 2 for v in group_b) / n_b # 合并标准差 pooled_std math.sqrt( ((n_a - 1) * var_a (n_b - 1) * var_b) / (n_a n_b - 2) ) if pooled_std 0: return 0.0 return (mean_a - mean_b) / pooled_std3.3 实验结果摘要四周实验的核心数据模拟数据基于真实趋势指标控制组均值实验组均值Cohens d每日 AC 数量3.24.80.92大效应平均首次 AC 耗时28.5 min18.3 min0.78中等效应首次 AC 率62%71%0.45小效应复杂度分析正确率55%73%0.85大效应一周后重做正确率68%61%-0.35小效应负向graph LR A[AI 辅助效果] -- B[效率提升大效应br/AC 数量 50%耗时 -36%] A -- C[质量提升中等效应br/复杂度分析 18%] A -- D[留存下降小效应br/重做正确率 -7%] B -- E[结论AI 提升短期效率br/但可能削弱长期记忆] C -- E D -- E四、实验结论的局限与反思样本量不足每组只有 5 人四周的数据量不足以得出统计上强显著的结论。Cohens d 虽然显示了大效应但置信区间较宽。AI 使用规范的执行偏差实验组中有人反映在卡住超过 20 分钟后很难忍住不让 AI 直接给代码。规范中的禁止直接要代码在实际执行中打了折扣。留存率下降的可能原因AI 辅助降低了思考的深度。当 AI 给出提示后用户倾向于直接按提示写代码跳过了自己想通的过程。这种浅层理解在短期内能 AC但长期记忆效果不如独立思考。题目类型差异AI 辅助在模板化题目如 BFS、二分查找上效果显著但在需要创造性思维的题目如贪心策略、复杂 DP上效果有限。这说明 AI 的价值主要体现在降低信息检索成本而非提升问题建模能力。外部效度实验参与者的水平偏中等LeetCode 周赛 Rating 1500-1800对初学者或高手的适用性未知。五、总结AI 工具确实能显著提升刷题效率——每日 AC 数量提升约 50%首次 AC 耗时降低约 36%复杂度分析正确率提升 18%。但知识留存率出现了约 7% 的下降提示 AI 辅助可能削弱长期记忆效果。落地路线建议使用 AI 辅助时遵循先思考再提问原则至少独立思考 15 分钟再寻求 AI 帮助。将 AI 定位为审查者而非生成者——先自己写代码再让 AI 审查边界条件。每周安排一次无 AI 刷题日检验真实掌握程度避免对 AI 产生依赖。对 AI 给出的复杂度分析保持怀疑态度自己用主定理或递归树法独立验证。