算法面试通关 40 讲
覃超
Sophon Tech 创始人,前 Facebook 工程师,卡内基梅隆大学计算机硕士
78356 人已学习
新⼈⾸单¥68
课程目录
已完结/共 62 讲
第二章:理论讲解+面试题实战 (53讲)
算法面试通关 40 讲
登录|注册
留言
23
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 45 | 面试题:爬楼梯
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 合格程序员的第一步:算法与数据结构
02 | 如何事半功倍地学习算法与数据结构
03 | 如何计算算法的复杂度
04 | 如何通过LeetCode来进行算法题目练习
05 | 理论讲解:数组&链表
06 | 面试题:反转一个单链表&判断链表是否有环
07 | 理论讲解:堆栈&队列
08 | 面试题:判断括号字符串是否有效
09 | 面试题:用队列实现栈&用栈实现队列
10 | 理论讲解:优先队列
11 | 面试题:返回数据流中的第K大元素
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 | 面试题:设计和实现一个LRU Cache缓存机制
57 | 理论讲解:布隆过滤器
58 | 课程重点回顾
59 | FAQ答疑&面试中切题四件套
60 | 回到起点:斐波拉契数列
61 | 白板实战番外篇:斐波拉契数列
62 | 结课测试&最后的一些经验分享
登录 后留言

全部留言(23)

  • 最新
  • 精选
Peter Zheng
老师 我今年36岁了,感觉自己知识储备和思维能力有些跟不上了,想去美国读CS硕士,会不会有些晚了

作者回复: 其实也还好,但是要想好后续是留在美国工作还是回来继续发展。如果是后者,可能美国cs硕士的帮助没有实战经验那么大。

2019-01-10
2
25
jackbauer
老师,我的理解回溯是不是应该类似深度遍历,相当于每步都向深遍历一层,每一层都可以有一步或者两步的分支,然后到最高点的话,返回计数加一。这样我的理解是不是和您说的回溯有些出入呢?

作者回复: 你的理解是正取的。 深度优先是方向,回溯是每一层都有不同的选择选项,然后每次进行一下尝试,然后继续下一层的递归。DFS和回溯不是互斥的关系。

2019-10-30
3
宋晓明
老师 爬楼梯的题 return n if n<=2 else func(n-1)+ func(n-2) 为什么不对?只不过效率低而已 另外越来越喜欢老师讲的课程 还是多多练习 之前面试就遇到过爬楼梯的题 无奈当时一遇到算法题就直接蒙圈了 也错过很多很好的机会

作者回复: 大量的重复计算,非常慢。指数级的复杂度。

2018-11-27
3
ssala
两个关键点: 1 dp状态的定义,也就是对实际问题的建模 2 状态转移方程,推导出问题与其子问题之间的递推关系 找出这两点,后续便是求解了。
2019-05-25
6
一只鱼
解答疑惑:状态转移方程 f(n) = f(n-1) + f(n-2); 是如何推导出来的? 视频中其实是通过找规律的方式推导出来的,这里我用另外一种思路“加法原理”来解释。 加法原理:通过分类的方式将大问题拆解成小问题, 举例:从北京到深圳有3种交通工具(火车、飞机、汽车),火车有2种(高铁和动车),飞机3种(南航、海航、东航),汽车4种(劳斯莱斯、宝马、奥迪、特斯拉),那从北京到深圳一共有 2 + 3 + 4 = 9 种方法。 从以上例子可以看出,加法原理重点在于分类,所有最小子类之和即为总共的选择。 爬楼梯这里也是同样,假如一共有 4 级台阶,那么有以下5种选择: 4-3-1-0 4-3-2-0 4-3-2-1-0 4-2-0 4-2-1-0 这里第一次分类是 4 分成 3 和 2,然后 3 可以继续细分成 3种选择, 2 可以继续细分成两种选择,总共 5 种选择。
2020-06-22
3
two one
上第n层楼梯 = 第n-1层楼梯再上1层 + 第n-2层楼梯再上2层
2022-01-21
2
一只鱼
关于递推和递归的思考:为什么递归更容易爆栈。 递推:自下而上,从已知到未知。 递归:自上而下,从未知到已知,再从已知到未知。 分析1:递推只需要从已知计算到未知就行了,而递归还需要执行从未知到已知的过程,执行步骤上就更多。 分析2: 递归过程中需要保存很多个函数的作用域,占用的内存更多,所以更容易爆栈
2020-06-22
1
czh
动态规划的关键: 1.状态的定义:最关键。状态是一个子问题(不是贪心中的局部问题),可以方便的发现子问题之间的关系 2.递推方程
2019-09-28
1
甄昕
斐波那契那个,用矩阵相乘就可以logN了
2023-01-31
阿骨打
haha,这个类似于斐波那契数列,递推下就解了
2022-07-26
收起评论