青训营心得笔记2| 豆包MarsCode AI 刷题

75 阅读4分钟
方向三:实践记录以及工具使用

功能亮点:精选真题

豆包AI的“精选真题”功能通过收录历年高质量的考试真题,帮助学习者紧跟考试趋势,精准把握考试重点和难点。这一功能的独特价值在于:

  1. 紧贴考试趋势:精选真题功能能够紧跟考试动态,及时收录最新的考试真题。通过分析历年真题的命题规律和变化趋势,学习者可以更加准确地把握考试的重点和难点,从而有针对性地进行复习。

  2. 提升学习效率:与普通的刷题方式相比,精选真题功能能够极大地提升学习效率。由于真题具有较高的质量和代表性,学习者在练习过程中可以更加高效地掌握考试所需的知识点和解题技巧,避免在海量题目中盲目摸索。

  3. 增强应试能力:通过练习精选真题,学习者可以更加熟悉考试的题型、题量和难度分布,从而增强应试能力。同时,真题中的解析和答案也能够帮助学习者更好地理解题目背后的知识点和解题思路,提升解题的准确性和速度。

刷题实践:精选真题的优势与应用

在使用豆包AI刷题过程中,精选真题功能显著提升了我的学习效果。以下是具体的实践案例:

实践案例:收集三种灯的最短时间问题

问题描述:小R在参观一个拥有 N 个商店的市场,每个商店包含一种类型的灯——红灯 R、绿灯 G 或蓝灯 B。市场中的商店由字符串 S 表示,其中每个字符对应商店的灯类型,商店的编号从 0 到 N-1。小R可以从任意商店开始旅程,并在每分钟内从当前商店移动到下一个商店(i 到 i+1)。他需要收集每种类型的灯 R、G 和 B 各至少一个,并且他想在尽可能少的分钟内完成任务。你的任务是帮助小R计算收集所有三种灯(R、G、B)所需的最少分钟数。如果无法收集到所有三种灯,返回 -1。

示例

  • 输入:N = 5, S = "RRGGB"
  • 输出:3

解决方案

通过豆包AI的精选真题功能,我练习了多道滑动窗口相关的题目,逐步提升了对该算法的理解和应用能力。在收集三种灯的最短时间问题中,我采用了滑动窗口的策略:

  1. 初始化变量:使用字典记录当前窗口内各灯的数量,设置左右指针表示窗口的起始和结束位置,初始化最小长度为 N+1。
  2. 扩展窗口:右指针向右移动,包含新的商店灯类型,更新字典中的计数。
  3. 收缩窗口:当窗口内包含所有三种灯时,计算当前窗口长度,并更新最小长度。然后,左指针右移,缩小窗口,更新字典中的计数,直到窗口不再包含所有三种灯。
  4. 判断结果:如果最小长度小于等于 N,返回最小长度减一(因为移动次数为窗口长度减一);否则,返回 -1,表示无法收集到所有三种灯。

代码实现

python
复制代码
def solution(N: int, S: str) -> int:
    from collections import defaultdict

    required = {'R', 'G', 'B'}
    count = defaultdict(int)
    unique = 0
    left = 0
    min_length = N + 1  # 初始化最小长度为 N+1

    for right in range(N):
        if S[right] in required:
            count[S[right]] += 1
            if count[S[right]] == 1:
                unique += 1

        while unique == 3:
            window_length = right - left + 1
            if window_length < min_length:
                min_length = window_length

            if S[left] in required:
                count[S[left]] -= 1
                if count[S[left]] == 0:
                    unique -= 1
            left += 1

    if min_length <= N:
        return min_length - 1  # 返回最小长度减一
    else:
        return -1

if __name__ == '__main__':
    print(solution(N = 5, S = "RRGGB") == 3)   # 输出 3
    print(solution(N = 4, S = "RRRR") == -1)   # 输出 -1
    print(solution(N = 6, S = "RGBRGB") == 2)  # 输出 2

实践收获

通过精选真题功能,我能够针对性地练习滑动窗口算法,逐步提升了解决此类问题的能力。在收集三种灯的最短时间问题中,我学会了如何应用滑动窗口策略高效地解决问题。这一过程不仅巩固了我的算法基础,还增强了我对滑动窗口应用场景的理解。

总结

豆包AI的精选真题功能通过紧贴考试趋势、提升学习效率和增强应试能力,为用户提供了高效的学习体验。在实际刷题过程中,该功能帮助我有针对性地提升了算法能力,特别是在滑动窗口等领域,取得了显著的进步。