算法小抄
前言(Live in front)
双非一本大三,最近拿到了大厂的算法 Offer,没想到兜兜转转最后还是过来搞算法。
一想到自己以后还是要搞算法,还是决定重新系统的学习算法,以及几何相关的知识。
以此文为鉴,不断成长。
如何系统的学习算法
其实说的不外乎就是有条理的去学,一块一块练。
那这里的话我会比较推荐这个算法小抄。
学习ing
数据结构
数据结构存在的意义就是储存和处理数据。
所以说数据结构本质都是一样的(增删改查),但是在不同的应用场景中,不同数据结构的效率不同。
在业务中考虑用哪种数据结构时,问一下自己需要什么(比如需不需要随机访问),增删改查哪个比重更高。
链表
86. 分隔链表
So stupid.
居然把分隔链表想的这么复杂,一直想着在一条链表上操作,明明只要分成两条就会很简单。
节点移动的时候要断链,不然引用会乱,但是这样原有的 List 就断掉了。
1 | ListNode* temp = node->next; |
二叉树
1 | //递归遍历单链表 |
这个思路真的很厉害。
算法
本质是穷举。
所以说就是要思考,怎么样才能穷举(必然有规律,不然做不到不遗漏和不重复),再思考如何去剪枝(什么情况不用穷举)。
一切算法均为模板。
笔试须知
因为大部分算法小抄都是 LeetCode 的,但是大厂笔试一般都用牛客的 acm 模式,也就是说需要我们自己去处理数据。
虽然 LeetCode 的模式更加贴近工作,但是牛客的 acm 模式能更深入的考察数据结构。
所以还是建议笔试前刷一会牛客的中难题,训练自己整理数据的能力。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment