AI刷题的知识与建议 | 豆包MarsCode AI刷题

8 阅读4分钟

一.通过刷题总结的新知识点

1.提升个人的编程语言基础:在刷题过程中,会更加熟练地掌握编程语言的基础语法,如变量定义、数据类型、控制流语句(条件判断、循环等)、函数的定义和调用等。不同的题目会要求灵活运用这些基础语法来实现各种功能,从而加深对语言本身的理解和运用能力。

2.掌握一些新的算法:接触到各种基础算法思想,如排序、搜索、贪心算法等。例如,通过排序算法题,了解冒泡排序、插入排序、快速排序、归并排序等不同排序算法的原理、时间复杂度和空间复杂度,以及它们各自的适用场景;在搜索算法中,掌握深度优先搜索和广度优先搜索的实现方式和应用范围,能够运用这些算法解决迷宫问题、图的遍历等相关问题。

比如说插入排序,算法原理如下:

  • 从第一个元素开始,该元素可以认为已经被排序。

  • 取出下一个元素,在已经排序的元素序列中从后向前扫描。

  • 如果该元素(已排序)大于新元素,将该元素移到下一位置。

  • 重复步骤 3,直到找到已排序的元素小于或者等于新元素的位置。

  • 将新元素插入到该位置后。

  • 重复步骤 2~5,直到处理完所有未排序的元素。

    def insertion_sort(arr): 
        n = len(arr) 
        for i in range(1, n): 
            key = arr[i] 
            j = i - 1 
            while j >= 0 and arr[j] > key: 
                arr[j + 1] = arr[j] 
                j -= 1 
                arr[j + 1] = key 
        return arr
    

比如说归并排序,算法原理如下:

(1)分治策略

  • 把待排序的序列分成若干个子序列,每个子序列的长度为 1 时,认为这些子序列已经是有序的。
  • 然后,将相邻的两个有序子序列合并成一个更大的有序序列,这个过程称为归并。
  • 重复这个过程,直到所有的子序列都被合并成一个完整的有序序列。

(2)归并过程

  • 假设我们有两个已排序的子序列 left 和 right,要将它们合并成一个有序序列。

  • 创建一个新的空序列 result,同时使用两个指针分别指向 left 和 right 的开头。

  • 比较两个指针所指元素的大小,将较小的元素放入 result 中,并将相应指针向后移动一位。

  • 重复这个过程,直到 left 或 right 中的所有元素都被放入 result 中。

  • 最后,如果 left 或 right 中还有剩余元素,将它们全部放入 result 中。

    def merge_sort(arr): 
        if len(arr) <= 1: 
        return arr 
        mid = len(arr) // 2 
        left = merge_sort(arr[:mid]) 
        right = merge_sort(arr[mid:]) 
        return merge(left, right) 
    def merge(left, right): 
       result = [] 
       i = j = 0 
       while i < len(left) and j < len(right): 
           if left[i] < right[j]: 
               result.append(left[i]) 
               i += 1 
           else: 
               result.append(right[j]) 
               j += 1 
       result.extend(left[i:]) 
       result.extend(right[j:]) 
       return result`
    

二.对入门同学的学习建议

1.掌握基础语法:认真学习编程语言的基础语法,包括变量、数据类型、运算符、控制流语句(如条件判断、循环)、函数等。这些是编程的基石,只有熟练掌握,才能更好地进行后续的学习和实践。可以通过阅读教材、在线教程等方式系统地学习语法知识,并通过编写简单的代码示例来加深理解和记忆。

2.多实践多练习:可以利用AI进行大量的刷题练习,提供了丰富多样的题目,涵盖了各种知识点和难度级别。从简单的基础题目开始,逐步提升难度,通过不断地练习,拓宽编程思路,提高解决问题的能力。在刷题过程中,要注重分析题目要求,设计合理的算法,优化代码实现。

3.坚持不懈地学习:编程能力的提升需要不断地积累和实践,不能一蹴而就。要养成每天学习和练习编程的习惯,坚持不懈地努力。即使每天只学习一点,长期积累下来也会取得很大的进步。同时,要不断总结学习经验和教训,反思自己的不足之处,及时调整学习方法和计划,不断提高学习效果。