关于刷leetcode算法题的疑问

关于刷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算法题。这个目的,有大佬帮我解答一下吗?