AI刷题 | 青训营X豆包MarsCode 技术训练营AI| 豆包MarsCode AI 刷题

100 阅读5分钟

AI刷题的优势

我们可以用一个经典的算法题来演示:两数之和问题。这道题可以很好地展示 AI 如何帮助学习者理解问题和优化解决方案。以下是实现代码:

class Solution { public int[] twoSum(int[] nums, int target) { // 使用 HashMap 存储数字和索引 Map<Integer, Integer> map = new HashMap<>()

    // 遍历数组
    for (int i = 0; i < nums.length; i++) {
        // 计算当前数字需要的配对数
        int complement = target - nums[i];
        
        // 如果 map 中存在这个配对数,返回两个数的索引
        if (map.containsKey(complement)) {
            return new int[] { map.get(complement), i };
        }
        
        // 将当前数字和索引存入 map
        map.put(nums[i], i);
    }
    
    // 如果没有找到解,返回空数组
    return new int[] {};
}

}

让我们从以下几个方面分析AI辅助刷题的价值:

1. 智能解析与讲解

  • AI 可以根据代码自动分析时间复杂度和空间复杂度
  • 能够提供多种解决方案的对比,从暴力解法到优化解法
  • 可以根据学习者的水平,提供相应难度的解释

2. 个性化反馈

  • AI 能够根据代码风格给出改进建议
  • 指出潜在的边界情况和性能隐患
  • 提供符合业界最佳实践的代码规范建议

3. 知识关联

  • 自动关联相似题目,形成知识网络
  • 指出该题目涉及的核心知识点(如哈希表、双指针等)
  • 建议后续学习路径

4. 实践价值

这个例子展示了如何:

  • 使用哈希表优化查找效率
  • 一次遍历解决问题
  1. 处理边界情况

5. AI 辅助的优势

  • 即时反馈:代码写完即可获得评估
  • 多角度分析:从多个维度理解问题
  • 渐进式学习:可以根据需要深入或扩展

总结建议

  • 不要过度依赖 AI,要理解解题思路
  • 尝试先自己思考,再参考 AI 建议
  • 注重算法思维的培养,而不是简单的代码记忆 这种 AI 辅助的学习方式能够帮助学习者:
  • 更快地理解问题本质
  • 掌握多种解决方案
  • 建立系统的知识体系
  • 提高编程技能和问题解决能力

问题描述

小R所在的国家有 n 个城市,每个城市的人口为 ai。如果某个城市的人口不超过其他任何一个城市人口的两倍,那么这个城市就被认为是稳定的。国家可以对部分城市实施政策,从而改变它们的人口数量。你的任务是帮助小R找到最少需要对多少个城市进行人口修改,才能使所有城市都变得稳定。 例如:对于城市人口为 [1, 2, 3, 4] 的国家,最少需要对1个城市执行政策,才能使所有城市稳定。

例如对于这个题目,刚开始我们可能没有什么想法,所以ai问一下: 好的,让我们来逐步解决这个问题。首先,我们需要理解题目的要求:找到最少需要对多少个城市进行人口修改,才能使所有城市都变得稳定。一个城市被认为是稳定的,当且仅当它的人口不超过其他任何一个城市人口的两倍。

解题思路

  1. 排序:首先对城市人口进行排序。排序后,我们可以更容易地判断哪些城市需要调整。
  2. 双指针法:使用双指针法来遍历排序后的数组,找到需要调整的城市。
  3. 计算调整次数:通过双指针法,计算出最少需要调整的城市数量。

//不难看出ai很快就给出了我们的思路,是不是感到灵光一闪脑子就有了想法,然后我们就可以开始分析这个思路的原理和过程,或许好久没写题了可能会手生不知道语法的写法了!!!这时候贴心的ai还给出了##代码提示: def solution(n: int, a: list) -> int: # 1. 对城市人口进行排序 a.sort()

# 2. 初始化双指针和最小调整次数
left = 0
right = 1
min_changes = n  # 初始化为最大可能值

# 3. 使用双指针法遍历数组
while right < n:
    # 如果当前城市的人口不超过前面城市人口的两倍
    if a[left] * 2 >= a[right]:
        # 计算当前需要调整的城市数量
        changes = left + (n - right - 1)
        # 更新最小调整次数
        min_changes = min(min_changes, changes)
        # 移动右指针
        right += 1
    else:
        # 移动左指针
        left += 1

return min_changes

不仅如此,就算运行完了报错你也可以问ai,无论是小问题还是大问题(逻辑错误算法不对),他都可以帮你纠正。如图:

image.png

image.png

image.png

总结

在实际刷题过程中,平台的精选真题帮助我解决了大量的技术难题,每次面对一个新题目,我都能在解决问题的同时提升自己的编程能力。通过这些题目,我不仅掌握了各种算法的实现方法,还提高了我的调试能力和代码优化技巧。深入思考与学习的双向提升 刷题的过程中,我不仅仅是解决了一个个问题,更重要的是通过每一道题目,培养了更加严谨的思维方式和解决问题的能力。在面对复杂问题时,我学会了如何通过分治法、动态规划、贪心算法等经典算法来优化解法。此外,遇到问题时,我还学会了通过分析问题、假设并推理,找出最佳的解决路径。