这个是面试的必备技能,而且特别是外企和一线大厂都很喜欢问算法题目,所以这也是一个必须跨跃的门槛。
这东西与当年ACM/ICPC以及中学的信息技术竞赛是同一套东西,核心就是算法和数据结构,目的就是训练逻辑思维能力,建模的能力和问题分析与解决的能力,当然 对于提升解决问题的能力还是很有帮助的。
很惭愧,当年没有学好(ACM/ICPC 2008年亚洲区域赛合肥赛区只拿到优胜奖 Honorable Mention),现在是时候好好补习一下了。
优质书籍
核心的书籍就是算法和数据结构,市面上书籍甚多,比较优质的有如下
基石
数据结构与算法是基础中的基础。
以面试题为主线的书
另外,还有一套书是以面试题为主线,辅助以介绍基础知识的书,非常之实用。
数据结构和算法可视化
这本身就是一个研究领域。但对于理解各种算法是非常有帮助的。
- VisuAlgo
- Algorithm Visualizer
- Data Structure Visualizations
- Visualizing Algorithms
- GitHub topic #algorithm-visualization
- Interactive Online Platform that Visualizes Algorithms from Code
LeetCode
现在最火的就是刷题,就是在LeetCode(力扣)上面刷题,网上各种攻略以及题解都非常之多。
- LeetCode Cookbook
- 大家都是如何刷 LeetCode 的?
- 刷完 900 多道算法题的首次总结:LeetCode 应该怎么刷?
- LeetCode按照怎样的顺序来刷题比较好?
- Leetcode面试高频题分类刷题总结
- LeetCode All in One 题目讲解汇总
- 代码随想录
- Algorithm
- 宫水三叶の刷题日记
- OI wiki
- 数据结构与算法教程,数据结构C语言版教程
- 算法入门教程(多语言实现)
- ♥数据结构基础知识体系详解♥
- JiuZhang basic algorithms
- 剑锋OI
- Algorithms for Competitive Programming
- Techie Delight
- 数据结构与算法
- LABULADONG 的算法网站
另外,在GitHub上面,也有大量的优质的LeetCode资源:
- LeetCode Solutions: A Record of My Problem Solving Journey
- LeetCode Problems’ Solutions. 耗子叔出品的
- LeetCode题解,151道题完整版
- LeetCode solutions in any programming language
- Demonstrate all the questions on LeetCode in the form of animation. 以动画的形式帮助你理解题解,非常棒的项目
- 《代码随想录》LeetCode 刷题攻略:200道经典题目刷题顺序,共60w字的详细图解,视频难点剖析,50余张思维导图,支持C++,Java,Python,Go,JavaScript等多语言版本,从此算法学习不再迷茫
- LeetCode刷题记录与面试整理
- Python & JAVA Solutions for Leetcode
- Solutions to LeetCode problems; updated daily. Subscribe to my YouTube channel for more.
- 公众号「宫水三叶的刷题日记」刷穿 LeetCode 系列文章源码
- 刷算法全靠套路,认准 labuladong 就够了
力扣与ACM OJ最大的区别就是在于它对编程语言支持丰富,并且并不限制你使用标准库,比如C++可以用STL,比如Java可以用Collections,除非题目中有特别的限制,这个需要注意,就是在解题的时候思维不能受到局限,比如查询相关的题目,首先能想到的就是Map,但一般在ACM OJ时,通常不会往Map上想,因为是不允许使用现成的库的(起码当年我训练的时候是这样的),但LeetCode上面并没有这样的限制(其实这很符合实际项目),所以思维要打开,另外就是可以多多尝试,有没有限制试过后就知道了。
更多的练习题
力扣是以面试为核心,它上面的题集都集中在面试,特别是大厂和外企的常见面试题目。
之外,就是各种OJ了,这是各种信息竞赛算法竞赛和ACM的训练基地,题目也更广泛,难度也相当的高。