关于新手的刷题AI--初 | 豆包MarsCode AI 刷题

91 阅读5分钟

image.png

读题

作为一个刚开始练习算法的新手,读题这一步往往是最容易被忽略却最关键的一环。在进行任何一道算法题目之前,我们首先要花时间把题目理解透彻。读题不仅是要知道题目让你做什么,还要理解题目中可能存在的一些限制和边界情况。

就像图中的例子,题目要求我们从两个数组中找出符合要求的数字,并按照一定的顺序返回。如果我们没有认真读题,很容易就会遗漏这些要求,导致最终解答错误。

在读题的过程中,我通常会先试着用自己的话复述一遍题目,并列出关键要求,比如输入是什么、输出是什么,是否有特殊条件等。这个过程让我能够更好地理解题目,理清思路,为后面的分析做准备。

分析题

读懂题目后,我们需要对题目进行深度分析。这一步是为了明确题目的数据输入和输出,以及选择合适的解决方法。 在图中的例子中,题目让我们从两个数组中找出符合条件的数字,然后按降序排列返回。这就意味着我们需要找出两个数组的交集元素,并对结果进行排序。

分析题目时,我会先考虑题目的数据规模,推测出可能的复杂度需求,从而判断要使用哪种算法比较合适。比如,对于这个问题,我们可以先用集合操作来快速找到交集,再使用内置的排序方法对结果进行排序。这种思路的构建是通过不断分析和积累题目类型来逐渐培养的。

写题

写代码是最有趣也是最具挑战性的部分,尤其是当你和AI工具合作的时候。作为一个新手,AI工具能够帮助你快速搭建基础代码,省去一些繁琐的语法问题。在写这道题的时候,我就让AI给我生成了初步的代码结构,然后根据实际情况进行调整。

比如,在图中给出的基础代码模板里,AI帮我快速构建了函数框架和一些基本的输入输出操作。我在此基础上加入了集合操作,找出交集部分的元素,然后对结果进行了排序。这个过程中,AI相当于给了我一个很好的起点,帮助我更快地进入问题的核心部分。

def solution(a, b):
    # 使用集合求交集并将结果转换为列表
    result = list(set(a) & set(b))
    # 按降序排序结果
    result.sort(reverse=True)
    return result

if __name__ == '__main__':
    print(solution([1, 2, 3, 7], [2, 5, 7]))  # 输出: [7, 2]
    print(solution([1, 4, 8, 10], [2, 4, 8, 10]))  # 输出: [10, 8, 4]
    print(solution([3, 5, 9], [1, 4, 6]))  # 输出: []
    print(solution([1, 2, 3], [1, 2, 3]))  # 输出: [3, 2, 1]

这段代码首先使用集合操作找到两个数组的交集,然后将交集转换为列表并进行降序排序,最后返回排序后的结果。通过这种方式,我们能够快速且准确地解决题目要求。

总结

通过这个例子的练习,我体验到AI在算法刷题中的辅助作用。它能帮我们节省不少时间,尤其是在初步搭建代码框架的时候。同时,通过使用AI,我们可以学习到一些新的写法和思路,比如如何更高效地操作数组或者集合。

不过,AI的作用是辅助,而不是完全替代我们自己的思考。每次刷题时,我们依然需要独立思考题目的逻辑,分析不同的解法,理解代码中的每一个细节。AI可以是我们学习的好帮手,但不能替代我们自己的动手和思考。

注意

在使用AI刷题时,需要特别注意生成代码的最终效果。AI虽然能够快速生成代码,但它并不总是能理解题目所有的细节和边界条件。因此,我们在拿到AI生成的代码后,一定要仔细检查代码的正确性,并进行充分的测试,确保代码能在各种输入情况下都表现正常。

此外,AI有时候会给出一些看似复杂的解决方案,而实际上题目可能有更简单直观的方法。这时候就需要我们自己去判断和选择,找出最适合题目的解法。

建议

对于像我这样的算法新手,使用AI工具来辅助刷题是一个非常不错的选择。它不仅可以提高我们的效率,还可以让我们在遇到瓶颈时得到一些启发。但是,我们要保持一种主动学习的态度,而不是依赖AI去代替所有的思考。

建议大家在使用AI工具的过程中,尽量多问“为什么”。比如,为什么AI会选择某种数据结构?为什么它要用这种排序方法?带着这些问题去学习,能让我们对算法有更深的理解和掌握。

总之,AI可以是我们算法学习过程中的优秀搭子,但真正的进步还是来自我们自己不断的练习和总结。希望大家都能在刷题的道路上越走越远,不断提升自己的能力!

同类型算法题推荐

  1. 数组交集:给定两个数组,找出它们的交集,返回结果中不应包含重复元素。
  2. 两个数组的差集:给定两个数组,找出只在第一个数组中出现但不在第二个数组中的元素。
  3. 数组并集:给定两个数组,返回它们的并集,要求结果中不应包含重复元素。
  4. 查找公共元素:给定多个数组,找出所有数组中都出现的公共元素。

这些题目和本题类似,都是关于数组的集合操作,涉及交集、并集、差集等基本操作,是练习集合运算和数组处理的好题目。