小C点菜问题| 豆包MarsCode AI刷题

84 阅读4分钟

学习笔记:使用豆包MarsCode AI刷题的高效方法与心得

一、题目解析

在豆包MarsCode AI刷题中,我选择了一道典型的“计算最多数量相同价格的菜”的题目进行解析。题目要求我们找到价格相同的菜中可以点的最多数量,且这些菜的单价不超过设定的阈值 m。以下是我的题解过程:

问题分析:给定一个价格列表 w 和阈值 m,我们需要先过滤掉价格超过 m 的菜,然后统计价格在 m 以下的菜中,哪一种价格出现的次数最多。

解题思路

  1. 使用 HashMap 来统计每种价格的出现次数。

  2. 只统计不超过 m 的价格,确保符合题目要求。

  3. 在统计完所有价格的次数后,找出最大次数,即为小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。

二、知识总结

在解决这个问题的过程中,我进一步掌握了以下几个知识点:

  1. 哈希表统计频率:使用 HashMap 可以轻松统计每个数字出现的次数。getOrDefault 方法可以在键不存在时设置初始值,极大简化了代码。

  2. 条件过滤:使用简单的条件语句(如 if (price <= m) {...})过滤符合条件的数据,有助于减少不必要的数据处理。

  3. 查找最大值:遍历 HashMap 的 values() 集合来找到出现频率最高的值,是处理频率统计问题的常用技巧。

学习建议:入门同学在使用哈希表时,可以多练习如何统计出现次数,这类操作在许多问题中都很实用。同时,要学会通过条件过滤来减少问题规模,这样可以让程序更高效。

三、学习计划

在刷题时,为了确保自己有进步并且能逐渐掌握更难的问题,我制定了如下学习计划:

  1. 制定刷题计划

• 每天刷2-3道题目,从简单到困难逐步增加难度。

• 针对不同题型(数组、字符串、哈希表等)制定计划,每周集中练习一类题型,确保知识点系统化。

  1. 利用错题集

• 将做错的题目收集到错题集中,定期回顾,尝试自己重新思考解答。豆包MarsCode AI 提供了错题跟踪功能,便于复习错题,找到自己的薄弱环节。

  1. 记录解题思路:每道题目做完后,写下自己的思路和实现步骤,并反思哪里可以优化。这样做有助于长时间的积累,使思路逐渐清晰。

四、工具运用与学习资源结合

在学习过程中,AI工具和其他学习资源结合使用可以事半功倍:

  1. 结合题解:通过 MarsCode AI 刷题后查看题解,了解更优的解法。与自己的解法对比,找到可以改进的地方。

  2. 学习视频和书籍:例如看一些数据结构与算法的书籍(如《算法导论》)或课程视频,帮助更深入理解。AI工具适合大量刷题,而书籍和视频可以帮助我们深度理解底层原理。

  3. 在线社区交流:在刷题过程中遇到不理解的地方,及时向社区求助,可以帮助我们快速掌握并解决问题。

总结

通过使用豆包MarsCode AI 刷题,我发现不仅可以帮助我快速提高解题效率,也能让我在反复练习中巩固基础。刷题是一个不断积累的过程,希望我的学习笔记能对大家有所帮助,建议大家多利用 AI 工具快速刷题,同时深度理解算法本质,为今后的编程打下扎实的基础。