首页 > 刷600多leetcode 谈谈大厂为什么考算法 &如何速成
头像
xanaan
编辑于 2021-02-17 20:20
+ 关注

刷600多leetcode 谈谈大厂为什么考算法 &如何速成

刷leetcode 也一年多了,现在基本上median 可以15-20分钟做出。hard 如果手感好40分钟内也能过

我猜你们一定有这种情况。每次刷完题就忘,第二次拿起来仿佛就像新题。

也可能有小伙伴会疑惑,为什么像字节等的大厂要考算法?

这个是大家都存在的问题,而之所以大厂想考算法,原因在于快速选拔人才,和高考数学一个道理。

通过算法,可以筛选出几类人

  • 特别聪明的,纵使没有刷过多少题,也能在提示下很快bug-free
  • 特别勤奋的,做了无数的题目,对于每道题每种解法对答如流
  • 特别喜欢该公司的,把该公司的题目刷了几个来回。

以上三种人才,公司招进来都不吃亏

因此你们发现了吧,公司想要高效率筛选人才,算法是一个很好用的工具

既然我们没有办法逃掉,那么如何快速准备呢?我以亲身经历解读一下,帮助你少走弯路

算法入门课

1.1 Algorithm Princeton

1.1.1 内容速览

第一章 简介 + 并查集

第二章 排序算法,包含归并,快速,堆,选择,希尔等排序。以及优先队列

第三章 Symbol table,二叉树,左倾红黑树,散列表

第四章 图,包括有向图,无向图,最小生成树,最短路径的两种算法

第五章 字符串,字符串排序,查找KMP等三种算法,正则表达式,霍夫曼树

第六章 背景, 包括B+树介绍等等(因为其他内容与刷题无关,就没写了)

1.1.2 学习顺序

本课程刚一开始就讲并查集,当时我在第一次听的时候很懵,以为算法刚开始就这么难了。内心满满的挫败感。
但实际上,一开始可以先听第二章,老头的用意是:

老头通过并查集案例来明确下面怎么结构化学算法。

一般老头会给案例应用场景,之后给出初步的算法
然后是对他的分析,包括时间和空间复杂度
并进一步优化
最后给出该问题算法可能的上界和下界。

可以说结构十分清晰

所以如果对图了解并不是很多,可以直接先把第1章跳过,从第2章开始听。

听课的顺序可以是2->3->4->5->1->6(章节)

视频当中给出的代码建议全部手敲一遍,因为他们不仅十分优雅,而且特别简洁,在比如优先队列当中,老头的实现就特别的漂亮

1.2 MIT 着重看DP,也就是 19-22集

这个是我看过最好的,最透彻的讲解DP题目的了



专题讲解 全部免费 点击标题跳转对应课程


dp[i][nk][0] = Math.max(dp[i - 1][nk][0], dp[i - 1][nk][1] + prices[i - 1]);
dp[i][nk][1] = Math.max(dp[i - 1][nk][1], dp[i - 1][nk - 1][0] - prices[i - 1]);

    while (root != null || !stack.isEmpty()) {
        while (root != null) {
            stack.push(root);
            root = root.left;
        }
        root = stack.pop();
        res.add(root.val);
        root = root.right;
    }







全部评论

(3) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期精华帖

热门推荐