我在leetcode刷题时,不知道是要追求一题多解,慢慢刷题,还是大量刷题?
跟学校里的说法一样,最重要的是懂得题目的原理,为什么用这种方法?题目被稍作修改之后,原本的方法是否还适用,为什么?
掌握的不应该是这道题怎么解,而是这道题应该这么解,这个解法还能怎么应用?
引一句古话:知其然,知其所以然!
贪心 -> 动态规划
对于刷Leetcode这个问题,需要综合考虑标签、难度和多解、学习题解、大量刷题三个方面。具体来说:
标签和难度 在刷题之前,需要根据自己的技能水平和面试/笔试需求,选择合适的难度。在选择难度之后,可以根据题目标签进行分类,逐个掌握每个知识点的思考路径。这样可以在一定程度上提高效率和效果。
多解、学习题解 有时候会遇到一道看不懂或者想不出来的题,这时候可以通过查看题解来寻求帮助。需要注意的是,需要多看几个题解,找到多个思路和解法,然后对比分析,最终选择自己觉得最好的一种解法。
大量刷题 在掌握了一定的基础知识和解题思路之后,需要进行大量的刷题来巩固和提高。刷题可以帮助我们更深刻地理解解题思路,也可以提高我们的代码水平和编程能力。
另外,遇到做不出的题目可以多造一些测试用例,并尝试不同的解法,从而找到正确的方向。需要注意的是,解题不仅仅是为了通过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,更重要的是真正理解解题思路,不断提高自己的能力。
}