下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 62 | 最后的一些经验分享
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

算法面试通关40讲

共62讲 · 62课时·约600分钟
18804
免费
01 | 合格程序员的第一步:算法...
免费
02 | 如何事半功倍地学习算法与...
免费
03 | 如何计算算法的复杂度
免费
04 | 如何通过LeetCode来进行算...
免费
05 | 理论讲解:数组&链表
06 | 面试题:反转一个单链表&...
07 | 理论讲解:堆栈&队列
08 | 面试题:判断括号字符串是...
09 | 面试题:用队列实现栈&用...
10 | 理论讲解:优先队列
11 | 面试题:返回数据流中的第...
12 | 面试题:返回滑动窗口中的...
13 | 理论讲解:哈希表
14 | 面试题:有效的字母异位词
15 | 面试题:两数之和
16 | 面试题:三数之和
17 | 理论讲解:树&二叉树&二...
18 | 面试题:验证二叉搜索树
19 | 面试题:二叉树&二叉搜索...
20 | 理论讲解:二叉树遍历
21 | 理论讲解:递归&分治
22 | 面试题:Pow(x,n)
23 | 面试题:求众数
24 | 理论讲解:贪心算法
25 | 面试题:买卖股票的最佳时...
26 | 理论讲解:广度优先搜索
27 | 理论讲解:深度优先搜索
28 | 面试题:二叉树层次遍历
29 | 面试题:二叉树的最大和最...
30 | 面试题:生成有效括号组合
31 | 理论讲解:剪枝
32 | 面试题:N皇后问题
33 | 面试题:数独问题
34 | 理论讲解:二分查找
35 | 面试题:实现一个求解平方...
36 | 理论讲解:字典树
37 | 面试题:实现一个字典树
38 | 面试题:二维网格中的单词...
39 | 理论讲解:位运算
40 | 面试题:统计位1的个数
41 | 面试题:2的幂次方问题&...
42 | 面试题:N皇后问题的另一...
43 | 理论理解:动态规划(上)
44 | 理论理解:动态规划(下)
45 | 面试题:爬楼梯
46 | 面试题:三角形的最小路径...
47 | 面试题:乘积最大子序列
48 | 面试题:股票买卖系列
49 | 面试题:最长上升子序列
50 | 面试题:零钱兑换
51 | 面试题:编辑距离
52 | 理论讲解:并查集
53 | 面试题:岛屿的个数&朋友...
54 | 面试题:岛屿的个数&朋友...
55 | 理论讲解: LRU Cache
56 | 面试题:设计和实现一个LR...
57 | 理论讲解:布隆过滤器
58 | 课程重点回顾
59 | FAQ答疑&面试中切题四件...
60 | 回到起点:斐波拉契数列
61 | 白板实战番外篇:斐波拉契...
62 | 最后的一些经验分享
本节摘要

精选留言(55)

  • 2019-01-09
    感谢一直来的谆谆教导。极客时间最好的课,不接受之一的评价。谢谢
    请上墙。。。

    作者回复: 感谢你的肯定!

    1
    38
  • 2019-01-28
    留过学的就是不一样,实力
    9
  • 2019-08-03
    超哥的这个课,我看得非常快。因为之前用心、用力学完了极客时间的另外一个算法专栏——大家都懂得。

    这阵子刻意练习递归、分治、贪心、回溯、动态规划,在练习这些算法的时候,确实遇到了不少难点,有时候,精神都有点「崩溃」了。想想, 超哥这个课确实帮了不少忙,从中也能感受到超哥的实战经验确实比较丰富。 我就说我从课程领悟到的一些要点:
    1. 递归模板 很多人都怕写递归,我也是,递归的思想,其实蛮容易懂的, 但是到切题的时候,就不知道如何下手了。我后来想明白了,就是缺少“模板”感觉。如果一上来按照如下几步开始:
    第一步:termination
    第二步:process
    第三步:drill down
    第四步:clear state
    然后,再往里面填递归代码,这肯定就容易多了。比如,我按照这个模板,填完代码、优化代码, 代码优化到最后,我自己都觉得是太美了,如下:
    ``` java
    class Solution {
        private int min = Integer.MAX_VALUE;
        public int minimumTotal(List<List<Integer>> triangle) {
            dfs(triangle, 0, 0, 0);
            return min;
        }
        
        private void dfs(List<List<Integer>> triangle, int layer, int pos, int sum) {
            
            if (layer == triangle.size()) {
                min = Math.min(sum, min);
                return;
            }
            sum += triangle.get(layer).get(pos);
            dfs(triangle, layer + 1, pos, sum);
            dfs(triangle, layer + 1, pos + 1, sum);
        }
    }
    ```

    2. DP
    DP做到后面,你就感觉了,有什么感觉呢:看到一个题目,你大概就能感觉出来,它是否可以用DP解决。当觉得可以用DP解决的时候,你再套用最优子结构验证下就可以了。然后就是两步走:
    (1) 状态如何定义?
    (2) 状态转移方程?
    搞定上面两步,剩下的就是转为代码了。

    3. 最后就是从超哥这里学到了很多切题的方法,比如: 刻意练习自己不会的类型的题目; 切题可以像打游戏一样等等。
    ......

    展开
    3
  • 2019-08-03
    超哥的递归代码写得太丑,😝 我忍不住优化了下。show you the code:
    ``` java
    class Solution {
        private int min = Integer.MAX_VALUE;
        public int minimumTotal(List<List<Integer>> triangle) {
            dfs(triangle, 0, 0, 0);
            return min;
        }
        
        private void dfs(List<List<Integer>> triangle, int layer, int pos, int sum) {
            
            if (layer == triangle.size()) {
                min = Math.min(sum, min);
                return;
            }
            sum += triangle.get(layer).get(pos);
            dfs(triangle, layer + 1, pos, sum);
            dfs(triangle, layer + 1, pos + 1, sum);
        }
    }
    ```
    展开
    3
  • 花了大半个春节假期,收获很多。感谢老师。

    作者回复: 也感谢你的支持!

    3
  • 2018-12-22
    讲的很实在,跟着老师战胜了自己
    3
  • 2018-12-19
    e..人生苦短我用Python
    3
  • 2019-02-25
    终于到了最后一节,感谢老师

    作者回复: 也感谢你自己的坚持!!

    2
  • 2019-01-28
    初步看完了,脑海里一直盘旋着那句,你再这么写,我就打爆你的头,头皮发麻,我会复习的😑

    作者回复: 哈,大家都是斗鱼的活跃用户呀

    2
  • 讲的非常好,以后有时间必须得再看一遍。
    2
  • 2019-09-09
    专栏刚出来就买了 奈何没坚持下去 最近又报了老师的 第四期算法训练营 希望能跟着老师的算法训练营 偶尔看看这个 坚持下去 😭😭😭

    作者回复: 加油! 祝早日完成300题,进入梦想的公司。

    1
  • 2019-05-19
    两遍,不止看完了两遍,而且做了详细笔记,而且所有代码都手写,都提交了!感觉有点底了。
    1
  • 2019-04-10
    终于都看完了,还要再看一遍,要练

    作者回复: 赞执行力! 请多看几遍 😁

    1
  • 2019-03-21
    感谢超哥!棒棒哒!我从尾开始看!希望今年能突破一下,感谢极客,感谢超哥,知识无价!

    作者回复: 多谢你的坚持!!

    1
  • 2019-03-20
    老师讲得挺好的,确实3分学7分练,还得自己多下功夫啊
    1
  • 2019-02-20
    拨云见日,感谢超哥!最好的算法课,不接受反驳。
    1
  • 2019-01-12
    花了一周时间, 除了DP部分没看完, 其余的都过了一遍, 感觉课程整体很不错。
    感谢分享。
    1
  • 2019-12-03
    又刷了一遍视频,并且跟着老师做了leetcode的题目,收获满满,感谢老师
  • 2019-12-01
    在最后打个卡。11月11号开始截至12月1号,刚好整整三周时间。这三周每一题老师有提到的解法都一一AC出来。并且在有道云笔记做了大量的笔记,本来想同步到博客上,因两边md格式有点问题。再花一周时间全部过一遍,每个算法再次手写。
  • 2019-11-29
    作为一个非科班出身的程序员, 第一次专门进行算法的学习, 这次花了20多天的时间完整的看完了, 觉得非常有收获.
    我使用视频的方法是先听理论讲解, 然后去leetcode自己独立做对应的题目,把自己能想到的解题思路都列出来并分析时间空间复杂度, 然后找一个最好的方法coding, coding完之后再听习题讲解, 优化自己代码, 最后再去leetcode上看discussion, 再优化自己代码, 最后整理解题思路, 提取代码的模板.
    这样把60多个视频看下来, 觉得自己现在解决一个题目的思路非常清晰了.
    很多程序的写法, 其实原来自己也那么写, 但是没有系统的归纳整理, 没有提取成模板级别; 原来碰到一个题, 产生了解题思路马上就会去code实现它然后运行看性能怎么样; 现在会先给出解法, 比如很多题第一个想法都是dfs(暴力法), 然后紧跟就会想暴力法的时间复杂度肯定高, 接着会想暴力法过程中有没有重复计算, 如果有重复计算就应该可以考虑用dp解, dp能解的话, dp状态的定义是什么, dp方程是什么, dp的时间复杂度有没有比dfs有提升? dp状态的空间复杂度一定用O(m*n)吗? O(m) 行不行...
    现在甚至有一种自己什么都会了的错觉哈哈... 不过相信这其实只是个开始, 目前应该是把理论的30%掌握的比较全面了, 算是师傅领进门了, 接下来还有70%的路, 要靠自己背上键盘去修行了
    展开