程序=数据结构+算法
不管你专攻于哪方面,作为一个程序员,算法都是一个最基本的素养,无论是在平时的解决需求,处理bug,还是笔试,面试中,都显得格外重要,所以,快快练就一身好算法吧。
现在,让我们一起康康有趣的算法吧!
0x01.学算法需要什么?
- 一个有趣的灵魂。
- 一个聪明的脑袋。
- 一个端庄的容颜。
- 一个强硬的身躯。
注意:以上都不需要。
学算法你只需要:
- 一颗持之以恒的心♥
0x02.如何学习算法
- 不以AC为目的,追求优化的最大程度。
- 真正的弄懂一道题目,重在理解思想,而不是代码本身。
- 算法是一个非常广泛地概念,永无止境,我们需要不断地学习。
- 刷题肯定是有好处,但最终还是看自己学进去地程度。
0x03.语言的选择
- 目前算法三大主流语言,C++,Java,Python,都可以,在解决不同地问题上优势不同。
- 选择自己最拿手的语言最好。
0x04.算法文章合集(持续更新)
注:这些文章对了解一些算法思想可能会有较大帮助,目前并不是很深入,题目也不是很难,ACM大佬可以忽略。
由于之前的时间原因,部分文章缺少图解,以后有时间会补上。
目前主要语言为C++,后序可能会使用java为主
这些题目的来源:
- Leetcode
- 程序员面试经典
- 剑指offer
- 经典算法文献
- 算法导论
本人水平不足,若有错误,欢迎大家指出,本博客会持续更新,希望对大家有所帮助
动态规划类(dp)
动态规划是一类非常常见的题型,也非常的有趣,下面这些文章会由浅入深的讲述这种思想:
一些动态规划入门的文章:
动态规划应用类文章:
较有深度的动态规划类文章:
Buy and Sell Stock Issues–Deep Mining Dynamic Thinking
搜索类(DFS,BFS,回溯,暴力搜索)
偏理论类:
搜索基础类:
应用类:
字符串类
哈希表类(容器有关)
数学类(数学思想)
Die Hard Problem(水壶问题)–算法中的数学思想
链表类:
树类:
面试题类:
其它(暂未分类):
(持续更新中~~)