关于刷leetcode算法题的疑问
最近看了世界模型这门课,然后突发奇想想用完成刷算法题来对该课程有深入的理解和应用。
普通刷算法题:
看到题目(文字)->写出解决该题目的编码
输入:是任意文字
输出:解决代码
学习材料:leetcode算法题的题目和对应的题解
模型:判别模型
然后我发现这是一个非常大而空的东西,而且一个题对应着一个解,没办法有题解的复用。
所以我引入了一些中间过程
学会做算法题
看到算法题->想出用什么算法去解决->选用对应的编程语言写出该算法->通过leetcode测试
输入:算法题
输出:解决的算法
联结模型
学习材料:算法题的解法
算法的学习
输入:算法的含义
输出:算法的步骤
经验学习
学习材料:算法定义和步骤
-
常见数据结构:数组 → 链表 → 哈希 → 栈/队列 → 二叉树 → 堆 → 图
- 数组的使用
- for (int i = 0; i < nums.length; i++); for (int num: nums)
- 快速排序,归并排序,堆排序,bubblesort,insertionSort
- 同行指针,快慢指针,滑动窗口
- 链表的使用
- 遍历while (cur != null) cur = cur.next;
- 数组的使用
-
常见算法:双指针→二分查找 ,滑动窗口 ,递归,分治,经典DP问题,字符串DP,DFS/BFS,拓扑排序,最短路径,**回溯(Backtracking)
输入:算法的步骤
输出:编程语音实现
经验学习(这个默写就好,因为前面学了算法的学习,只要有这个映射就好)
学习材料:算法的对应语言的固定模版
-
常见数据结构:数组 → 链表 → 哈希 → 栈/队列 → 二叉树 → 堆 → 图
- 遍历,排序
-
常见算法:双指针→二分查找 ,滑动窗口 ,递归,分治,经典DP问题,字符串DP,DFS/BFS,拓扑排序,最短路径,**回溯(Backtracking)
上面的链路就在于知识能够复用,就比如数据结构知识,用JAVA写完,换python实现,也没问题,就第三层改变下而已。
但问题是这样的学习像空中阁楼,有些知识并不是很有用,没办法直接写完leetcode题目,那需要结合leetcode题目到解法的映射,并且每个leetcode题目不想算法模版那样固定不变,而且有些许变化。所以我有时候又不得不用一开头的leetcode题目->解法的方法学习。但这种学习效率感觉很慢,做不到高效学习算法。
我想用课程的方法高效完成:解决leetcode算法题。这个目的,有大佬帮我解答一下吗?