我对于如何刷题的疑惑

我在leetcode刷题时,不知道是要追求一题多解,慢慢刷题,还是大量刷题?

跟学校里的说法一样,最重要的是懂得题目的原理,为什么用这种方法?题目被稍作修改之后,原本的方法是否还适用,为什么?
掌握的不应该是这道题怎么解,而是这道题应该这么解,这个解法还能怎么应用?
引一句古话:知其然,知其所以然!

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7706055
  • 你也可以参考下这篇文章:自我修炼_中级算法篇_leetcode_第3题
  • 除此之外, 这篇博客: 刷leetcode不知道从哪里刷起?? 来看看,我把刷题题目顺序都排好了,每道题还带详细题解!中的 动态规划 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    贪心 -> 动态规划

  • 您还可以看一下 张益珲老师的Python每日一刷LeetCode编程题课程中的 套餐组合问题小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    对于刷Leetcode这个问题,需要综合考虑标签、难度和多解、学习题解、大量刷题三个方面。具体来说:

    1. 标签和难度 在刷题之前,需要根据自己的技能水平和面试/笔试需求,选择合适的难度。在选择难度之后,可以根据题目标签进行分类,逐个掌握每个知识点的思考路径。这样可以在一定程度上提高效率和效果。

    2. 多解、学习题解 有时候会遇到一道看不懂或者想不出来的题,这时候可以通过查看题解来寻求帮助。需要注意的是,需要多看几个题解,找到多个思路和解法,然后对比分析,最终选择自己觉得最好的一种解法。

    3. 大量刷题 在掌握了一定的基础知识和解题思路之后,需要进行大量的刷题来巩固和提高。刷题可以帮助我们更深刻地理解解题思路,也可以提高我们的代码水平和编程能力。

    另外,遇到做不出的题目可以多造一些测试用例,并尝试不同的解法,从而找到正确的方向。需要注意的是,解题不仅仅是为了通过Leetcode,更重要的是真正理解解题思路,不断提高自己的能力。

    以下是参考代码,仅供参考:

    // 根据标签和难度分类刷题
    public void categorySolve() {
        String[] tags = {"Array", "String", "DP"}; // 可以根据实际情况进行修改
        String[] levels = {"Easy", "Medium", "Hard"}; // 可以根据实际情况进行修改
        for (String tag : tags) {
            for (String level : levels) {
                String url = "https://leetcode.com/problems/tag/" + tag + "/difficulty/" + level;
                // 使用HttpClient和Jsoup等库进行爬取题目列表和题目详情
                // 将题目保存到本地或者数据库中
            }
        }
    }
    
    // 查看题解
    public void viewSolution(String problemId) {
        String url = "https://leetcode.com/problems/" + problemId + "/solution/";
        // 使用HttpClient和Jsoup等库进行爬取题解
        // 将题解保存到本地或者数据库中
    }
    
    // 大量刷题
    public void solveMany() {
        List<String> problems = getProblemsFromLocal(); // 从本地或者数据库中获取题目列表
        for (String problemId : problems) {
            solveProblem(problemId);
        }
    }
    
    // 解题
    public void solveProblem(String problemId) {
        // 获取题目详情并解析出题目描述和示例等信息
        // 根据题目难度、标签等信息进行分类,并选择合适的解法进行尝试
        // 对于做不出的题目,可以多造测试用例,尝试不同的解法,从而找到正确的方向。
        // 需要注意的是,解题不仅仅是为了通过Leetcode,更重要的是真正理解解题思路,不断提高自己的能力。
    }
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^