学习笔记:使用豆包MarsCode AI刷题的高效方法与心得
一、题目解析
在豆包MarsCode AI刷题中,我选择了一道典型的“计算最多数量相同价格的菜”的题目进行解析。题目要求我们找到价格相同的菜中可以点的最多数量,且这些菜的单价不超过设定的阈值 m。以下是我的题解过程:
• 问题分析:给定一个价格列表 w 和阈值 m,我们需要先过滤掉价格超过 m 的菜,然后统计价格在 m 以下的菜中,哪一种价格出现的次数最多。
• 解题思路:
-
使用 HashMap 来统计每种价格的出现次数。
-
只统计不超过 m 的价格,确保符合题目要求。
-
在统计完所有价格的次数后,找出最大次数,即为小C可以点的最多菜数。
• 代码详解:
import java.util.HashMap;
public class Main {
public static long solution(int m, int[] w) {
HashMap<Integer, Integer> countMap = new HashMap<>();
// 遍历每道菜的价格,统计不超过 m 的菜的数量
for (int price : w) {
if (price <= m) {
countMap.put(price, countMap.getOrDefault(price, 0) + 1);
}
}
// 找出数量最多的价格
int maxDishes = 0;
for (int count : countMap.values()) {
maxDishes = Math.max(maxDishes, count);
}
return maxDishes;
}
public static void main(String[] args) {
System.out.println(solution(6, new int[]{2, 3, 3, 6, 6, 6, 9, 9, 23}) == 3);
System.out.println(solution(4, new int[]{1, 2, 4, 4, 4}) == 3);
System.out.println(solution(5, new int[]{5, 5, 5, 5, 6, 7, 8}) == 4);
}
}
• 图解:
• 使用哈希表存储价格和出现次数,示例输入 [2, 3, 3, 6, 6, 6, 9, 9, 23],阈值 m=6。过滤掉大于 m 的菜价后,剩下 [2, 3, 3, 6, 6, 6]。
• 计算每个价格的次数:2 出现 1 次,3 出现 2 次,6 出现 3 次。因此,答案为 3。
二、知识总结
在解决这个问题的过程中,我进一步掌握了以下几个知识点:
-
哈希表统计频率:使用 HashMap 可以轻松统计每个数字出现的次数。getOrDefault 方法可以在键不存在时设置初始值,极大简化了代码。
-
条件过滤:使用简单的条件语句(如 if (price <= m) {...})过滤符合条件的数据,有助于减少不必要的数据处理。
-
查找最大值:遍历 HashMap 的 values() 集合来找到出现频率最高的值,是处理频率统计问题的常用技巧。
• 学习建议:入门同学在使用哈希表时,可以多练习如何统计出现次数,这类操作在许多问题中都很实用。同时,要学会通过条件过滤来减少问题规模,这样可以让程序更高效。
三、学习计划
在刷题时,为了确保自己有进步并且能逐渐掌握更难的问题,我制定了如下学习计划:
- 制定刷题计划:
• 每天刷2-3道题目,从简单到困难逐步增加难度。
• 针对不同题型(数组、字符串、哈希表等)制定计划,每周集中练习一类题型,确保知识点系统化。
- 利用错题集:
• 将做错的题目收集到错题集中,定期回顾,尝试自己重新思考解答。豆包MarsCode AI 提供了错题跟踪功能,便于复习错题,找到自己的薄弱环节。
-
记录解题思路:每道题目做完后,写下自己的思路和实现步骤,并反思哪里可以优化。这样做有助于长时间的积累,使思路逐渐清晰。
四、工具运用与学习资源结合
在学习过程中,AI工具和其他学习资源结合使用可以事半功倍:
-
结合题解:通过 MarsCode AI 刷题后查看题解,了解更优的解法。与自己的解法对比,找到可以改进的地方。
-
学习视频和书籍:例如看一些数据结构与算法的书籍(如《算法导论》)或课程视频,帮助更深入理解。AI工具适合大量刷题,而书籍和视频可以帮助我们深度理解底层原理。
-
在线社区交流:在刷题过程中遇到不理解的地方,及时向社区求助,可以帮助我们快速掌握并解决问题。
总结
通过使用豆包MarsCode AI 刷题,我发现不仅可以帮助我快速提高解题效率,也能让我在反复练习中巩固基础。刷题是一个不断积累的过程,希望我的学习笔记能对大家有所帮助,建议大家多利用 AI 工具快速刷题,同时深度理解算法本质,为今后的编程打下扎实的基础。