注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
本帖最后由 大队管理员 于 2019-12-13 11:42 编辑
首先声明一点,面试是面试,做题是做题,做题是面试的必要条件。接下来 ,就我做了这些题的感悟,主要是给自己做个纪念,也分享下我的见闻。
1 说说我认识的刷题套装
编辑器 : vscode sublime 都行, 不过我偏好IDEA的原因是因为可以写单元测试,这对我复习,调试并验证我的代码正确性很重要。
IDEA 也可以调成文本编辑模式, 点击IDEA右下角的帽子图标,取消code auto complete。取消syntax 或者 highlight都行。
250道包含内容:2个top系列为主+外加一些高频题目和自己认为薄弱的题目
2 leetcode外挂插件 : 目前 有了已经开发了leetcode刷题插件,不需要取网页端浏览,直接编辑器里面浏览,自动生成。
https://github.com/shuzijun/leetcode-editor
网页端的一个油猴插件 : 自动切换国区和美区 , 搜索答案 , 个人用的还算不错 。 具体功能自己装个油猴插件 ,自己玩玩吧
https://greasyfork.org/zh-CN/scr ... 3%E5%8A%A9%E6%89%8B
3 推荐参考答案: grandyang的文字解答 和 花花酱的视频 为主。还有 水中的鱼 , LEE215 等
个人主观评价:花花酱做的视频基本很精品,覆盖的题目都比较全了,也做了分类。适合小白和一定刷题经验的人。
每个视频时长基本控制在20min以内,讲的很好,好在除了 给你解题思路和复杂度简略分析,还会融会贯通,连带在视频内 提示并放出相关类似的题目的YouTube视频链接。
花花酱本人的履历 我也算搜过, 看他的解答 很放心!
答案的基本版本是 C++一定有。 Python和JAVA 现在也带上了。
唯一缺点就是:没有评论区,YouTube视频下面贴代码也不太好。
然后再来说说,grandyang的, 文字描述功底 我认为早期版本可能不太行,后期版本都是不错的。
他的文字性题解思路描述 可以 让你在5min内了解这道题目的大致解题思路,不用费心思看你可能认为20min很长会让你睡觉的视频解答。
grandyang 尽量都提供一题多解,并在文章末尾附上原题链接和 JAVA C版本的vote数较高的答案。
当然,我后说grangdyang,是因为我个人觉得他的部分答案,没讲到关键点子上。。。比如DP类型的 背包问题 ,举个例子 312 burst ballon 区间DP
所以, grandyang的答案的缺点是在于, 有些经典题目 可能并没有 帮助你了解这类型问题的本质。
最后,这只是我的个人看法,从心里面上来说,我很感谢两位提供这么棒的答案。
LEE215 不错了 ,不过没有思路讲解,吸收的养分比较少。但是代码写的是整洁!
其他收费的视频,我直言很垃圾 ,缴纳智商税。。。。走捷径不是不可以,但是那些弯路你最后还是要走,为什么硬要把他们分离开,先走捷径呢?
4 关于学习材料:除了leetcode还有什么可以看看的?
这个问题,比较难回答。
我之前也买了刘汝佳的算法竞赛入门经典(第2版) 还有配套答案和训练集。
https://book.douban.com/subject/25902102/
最后也没仔细去学,不过当做参考书也还是不错的。
前期我还去了解了USACO CODEFORCE HDOJ POJ ZOJ TopCoder 等等是干啥的。
至于编程之美和微软技术面试心得 剑指offer我没学过 好像有些经典题目就是从这里出的。
这里,我想推荐下 https://oi-wiki.org 这个面向初高中的OIER的网站, 网站发起人目测是THU的。。
这个网站,我获取了什么有用的信息?
我从OI的视角,将leetcode题目置于 OI领域,看看主要考察什么。
毕竟leetcode一定程度上就代表面试算法题部分的考察项目嘛
dp分类 字符串处理 数论 基础的数据结构 位运算的基本和灵活应用,
线段树 树状数组 区间DP 树形DP RMQ ST表等了解或理解
另外,就是崔添翼大佬的背包九讲V2,我个人的学习能力停留在第六章,第七章及以后的 听不太懂。。。
前面几章相当经典,是培养我DP启蒙的一个小册子。感谢这位大佬 撒花🌸🌸🌸🌸🌸🌸🌸🌸
暂时想到的就这些。
5 算法和数据结构学习应该有怎么样的顺序: 我个人犯的错误就是前期刷题质量和效率太低,埋了很多雷。
首先 二分查找 左闭右开的lower_bound写法一定要理解 。这是一种思想。而不是简单的查找数值!!
排序的话,快排 和快排的切分 默写程度吧,3向快排和归并排序 也要能默写咯 ,其他自己看着办吧
接下来谈谈 栈和队列的运用的
基于栈LIFO的数据结构特点,DFS的非递归肯定用栈啦,单调性栈 的运用 这个自己去体会吧。
队列的话 FIFO特点, BFS 肯定用得上了 。 BFS问题 比如课程表,接雨水Ⅱ
优先队列 用在哪里 ? top k系列问题 以及 依赖于优先队列的BFS遍历
二叉堆和二叉树 ,高度, 深度 ,叶子结点 ,非叶子节点 ,这个需要理清楚 。
二叉树 基本上用递归为主了 。遍历方式:递归,非递归,morris遍历 , 高度和深度计算 。
链表的话 考察的比较少 环检测 翻转链表 必须会吧 ,哑节点dummynode的运用。
树状数组 ST表 就是一个二进制倍增思想的运用吧,这个在崔添翼大佬的背包九讲里面有提及,我认为可以不用学,尝试下还行。UF的话 也比较常见,这个还好了,碰到的比较简单,要么连通性判断,要么连通图个数计算。
6 刷题用什么语言: 从功利性角度来看 JAVA C++比较稳了,毕竟leetcode答案 语言版本也是这2种最为常见。
Python 答案 代码是少, 代码少并不代表 你就能容易理解这个答案。
所以经常leetcode讨论区会有show 几行Python代码 solution 我觉得这并没有提供有效的信息。
7 说说leetcode的tag分类: 我认为唯一一点做的不好的是DP分类
dp是一个比较宏大的概念,细分下来有很多种经典的DP,让人印象深刻的股票系列 烧气球 数组切割求最值问题
其他tag归类我认为都okay
最后,希望有人批判下我的思路感悟
祝愿大家刷题打BOSS 通关。走向人生巅峰哈哈
补充内容 (2020-3-13 18:11):
250 远远不够 大家不要学我啦 ,
只能说 做题要多总结
一个菜鸡 250 最多入门槛而已 (尴尬)
去面试top的 还是 不够滴!
2个月没上了 ,提醒大家不要被我误导了 |