青训营X豆包MarsCode 刷题实践 | 豆包MarsCode AI 刷题

16 阅读5分钟

本文章是关于<伴学笔记 | 青训营X豆包MarsCode 技术训练营>中对应方向三:实践记录以及工具使用所记录的伴学笔记😊。

AI刷题的优势与实践案例分析

近年来,人工智能(AI)技术的迅猛发展为教育领域带来了诸多创新,尤其是在算法学习和编程训练方面。以豆包MarsCode为代表的AI刷题平台,为学习者提供了便捷且高效的学习工具,不仅提升了解题能力,也大幅缩短了知识消化的时间。这篇文章将从AI刷题的优势出发,结合具体实践案例,探讨其在学习中的实际应用和功能表现。


一、AI刷题的主要优势

image-20241125223255966

  1. 即时反馈与错题分析

    • 优势描述:AI刷题系统能够实时检测代码正确性,提供详细的错误提示。这对于初学者尤为重要,可以快速定位问题根源,避免无效尝试。
    • 案例分析:例如,在“小R的子数组区值”问题中,AI工具不仅验证了解题结果,还提供了性能优化的建议,让学习者掌握了多种解题思路。
  2. 动态规划与个性化路径

    • 优势描述:AI系统会根据用户的刷题进度和解题情况,自动推荐难度适宜的题目,逐步提升能力。
    • 案例分析:通过豆包MarsCode的动态规划模块,我完成了“寻找最大的菠萝”题目。AI根据我的进度调整推荐题目难度,确保学习过程流畅而高效。
  3. 交互式教学与知识点补充

    • 优势描述:AI不仅检查答案,还提供交互式的代码讲解和知识点补充,帮助用户快速理解复杂算法。
    • 案例分析:在解决“数字字符申格式化”问题时,AI工具通过补充相关的正则表达式知识,大幅减少了我的学习时间。
  4. 支持多语言编程与多功能调试

    • 优势描述:许多AI刷题平台支持Python、C++、Java等多种编程语言,同时集成了性能分析、代码优化等功能。
    • 案例分析:在MarsCode中完成“大UCC子计算”问题时,AI帮我将代码从Python优化为C++实现,性能提升了约30%。

二、AI刷题在学习中的实际应用

1. 案例:小R的子数组区值

问题描述:求一个数组中所有子区间的按位或结果集合的不同值个数。 我的思路:起初尝试使用暴力解法,但由于子区间数量庞大,算法效率过低。 AI帮助

  • 提供了按位或运算的优化解法思路。
  • 自动提示我使用集合(set)存储子区间结果以避免重复计算。
  • 检查代码后给出了更高效的动态更新方案。

最终代码

 def solution(a):
     all_results = set()
     previous_set = set()
 ​
     for num in a:
         current_set = {num}
         for val in previous_set:
             current_set.add(val | num)
         all_results.update(current_set)
         previous_set = current_set
 ​
     return len(all_results)

结果:通过AI的优化建议,我的代码运行时间减少了约40%,对按位操作的理解也更深入。


2. 案例:小S的菜式制作

image.png

问题描述

小S准备做一道菜。为了做这道菜,小S需要 2 个材料a和 2 个材料b。现在小S有 a 个材料a,b 个个材料b,以及 c 个万能个材料(每个万能食材可以替代一个材料a或者一个材料b)。小S想知道,自己最多可以制作多少次这道菜。

我的思路

尝试用双重循环暴力解,但因时间复杂度过高而被AI标注为“不可行”。

AI帮助
  • 提示可以分解公式为min(a // 2, b // 2) + (c // 2)
  • 推荐使用一次遍历维护min(a // 2, b // 2)的最大值,从而大幅优化时间复杂度。
 def solution(a: int, b: int, c: int) -> int:
     # 计算在不使用万能材料的情况下可以制作的菜的数量
     possible_dishes = min(a // 2, b // 2)
     
     # 计算制作 possible_dishes 后剩余的材料
     remaining_a = a - possible_dishes * 2
     remaining_b = b - possible_dishes * 2
     
     # 使用万能材料补充剩余的材料
     while c > 0 and (remaining_a + remaining_b + c >= 4):
         # 尝试再制作一道菜
         if remaining_a < 2:
             needed = 2 - remaining_a
             if c >= needed:
                 c -= needed
                 remaining_a = 0
             else:
                 break
         else:
             remaining_a -= 2
         
         if remaining_b < 2:
             needed = 2 - remaining_b
             if c >= needed:
                 c -= needed
                 remaining_b = 0
             else:
                 break
         else:
             remaining_b -= 2
         
         possible_dishes += 1
     
     return possible_dishes
结果

通过AI的分步引导,我学会了如何从数学角度简化问题,完成了复杂公式的转化。


三、AI刷题对学习者的影响

  1. 提升学习效率

    • 在传统学习模式中,解决一道中等难度题目可能需要数小时,但在AI工具的帮助下,时间可缩短至20分钟。
  2. 强化知识点的掌握

    • 通过AI的知识补充功能,我不仅掌握了解题方法,还学会了很多算法优化技巧,如贪心算法、动态规划等。
  3. 提升编程能力

    • AI提供了性能分析和代码规范化建议,让我在学习算法的同时,也提升了编写高质量代码的能力。
  4. 增强学习的趣味性

    • 平台中的进度条、成就系统和图表统计功能,极大增强了我的学习动力,让刷题不再枯燥。

四、未来的改进方向

尽管AI刷题平台已经非常强大,但仍有一些提升空间:

  • 增加语音交互功能,方便用户边听讲解边刷题。
  • 提供更丰富的实战项目,与算法题目结合实际场景。
  • 针对难题增加分步提示,帮助学习者分阶段完成复杂问题。

五、总结与展望

最近我用豆包MarsCode刷了不少算法题,比如“最长公共子序列”和“数组中的第K大元素”。让我印象深刻的是,AI不仅能实时检查代码的正确性,还能提示优化思路。使用网页版本内嵌MarsCode使用还是比较方便的,推荐没用的小朋友可以试试,缺点就是没有题解,有些难题可能会卡着无法解决,希望以后能解决这个问题吧😬。