学习方法与心得| 豆包MarsCode AI 刷题

95 阅读3分钟

1.题目解析:豆包MarsCode AI刷题解析 在使用豆包MarsCode AI进行编程练习时,我选择了“最短路径”问题作为题目。本题要求从一个起点到达一个终点,寻找最短路径。通过分析这个题目,我总结出了以下思路:

图的建模问题:将中的各个地点视为所在的节点,路径视为所在的边。用邻接矩阵或邻接表来存储图信息。 算法选择:这个问题典型的解决方法是使用 Dijkstra 算法或 Bellman-Ford 算法。我选择了 Dijkstra 算法,因为它能够更高效地解决单源最短路径问题。 代码实现:首先,我通过输入的路径数据构建图的邻接表。然后,初始化一个距离数组,表示到各个节点的最短距离,开始遍历节点,更新最短路径。输出从起点到终点的最短路径及其距离。 import heapq

def dijkstra(graph, start): pq = [(0, start)] # (distance, node) distances = {node: float('inf') for node in graph} distances[start] = 0

while pq:
    current_distance, node = heapq.heappop(pq)
    
    if current_distance > distances[node]:
        continue
    
    for neighbor, weight in graph[node]:
        distance = current_distance + weight
        if distance < distances[neighbor]:
            distances[neighbor] = distance
            heapq.heappush(pq, (distance, neighbor))

return distances

示例图:每个节点有一个列表,表示与其相连的邻居及权重

graph = { 'A': [('B', 1), ('C', 4)], 'B': [('A', 1), ('C', 2), ('D', 5)], 'C': [('A', 4), ('B', 2), ('D', 1)], 'D': [('B', 5), ('C', 1)] }

print(dijkstra(graph, 'A')) 通过这个例子,我更深入地理解了Dijkstra算法的工作原理,尤其是优先队列的运用。

2.知识总结:豆包MarsCode AI刷题过程中的收获 在刷题过程中,我总结了以下几点新知识:

数据结构与算法的结合应用:刷题让我更熟练地使用图、堆、栈、队列等常见的数据结构。不同的问题需要选择合适的数据结构来优化算法性能。 复杂度分析:每次写完代码后,我都会进行时间复杂度和空间复杂度的分析,帮助自己更加理智地优化代码,提升解题的效率。 代码调试与测试:在完成问题后,我总是使用不同的测试用例来验证代码的正确性,尤其是边界情况和特殊情况,防止潜在的bug。 3.学习计划:如何高效学习编程 我制定了以下高效学习计划:

每天刷题目标:设置每天解决2~3道编程题,保证在理解算法思路的同时,提升编码速度。 错题本:使用豆包MarsCode AI的错题功能,将错题收集起来,定期回顾并重点分析每一道题的错因,是否思路错误、算法不熟练,代码写得不严谨。 复习与总结:每周进行一次知识总结,回顾一周内刷过的题目,整理出常见的算法题型及解法,把其记录在笔记中,形成知识体系。 4.工具运用:如何结合AI刷题功能与其他学习资源 豆包MarsCode AI提供了个性化的题目推荐和实时反馈功能,这让我能够高效地选择题目进行练习。我填写其与以下资源结合使用:

LeetCode:使用LeetCode来扩展题目难度,挑战自己。 Github:查看开源项目的代码,学习如何在真实项目中运用数据结构与算法。 在线教程与视频:对于一些理解困难的算法,我会结合视频教程进行学习,帮助加深对知识点的理解。