开始文章输出之前,我没有着急下笔,而是认真的问了自己几个问题。
我为什么要学算法?
如何保持学习的热情和积极性?
学到的算法是否可以应用到工作中?
学到的算法怎么应用到工作中?
如何实现从掌握到精通?
我想每个学习周期,总要收获自己想要得到的东西,到底什么才是自己想要的或者需求要的。
于是我面对比较新的技术,养成了提问自己->探索过程->找出答案的习惯。
日常无论是工作还是生活,有些场景可以借助算法,将复杂问题简单化。
比如买东西时怎么挑性价比高的商品、怎么用优惠组合可以让价格更低、出行时哪条路线更便捷等。
复杂一些的比如估算某件事的成本、某个规律性事件的数量、还有一些事件发生的概率以及什么概率下做决定比较多。
这些事,单纯靠想象,是比较难处理的,如果代入一些公式进行计算得到结果,怎么做选择就一目了然了。
我在探索算法的使用场景的时候,发现了很多有趣的例子。
37%法则
经过数学家欧拉的实验,以37%作为分界点,前面的时间用来观察,后面的时间用来作决策的一种方法。
卖房子的时机
只要你可以得到一系列报价,清楚报价金额的变化幅度,并且在这个变化范围内各种报价出现的可能性是相同的。只要报价不会中断(积蓄也不会花完),就可以单纯地考虑你对收获或损失的期望值,以决定是否继续等待更有利的交易。
最优停车位置
停车难题在于停车位占用率,即目前被占用的所有停车位占总停车位的比例。
如果占用率很低,很容易找到一个好的停车位;如果占用率很高,想为你的车找到一席之地就困难了。
上面这些被例子被涵盖进最优停止理论中,合理的选择停止观望的时机,可以帮助节省成本,提高效率。
在搜索省份和城市数据的时候,希望按照首字母进行分类展示。
打开外卖APP,查看美食商家,可以按照距离筛选,也可以按照好评筛选。
整理好装有100本书的书架和两个各有50本书的书架,哪个更费时?
这些问题,如果没有建立排序,想想数据量,就令人头皮发麻。
合理利用算法,可以为我们解决大数据量问题,也可以通过结果了解社会的本质。
所谓社会,就是我们维持的另外一种更重要、规模更大的秩序。
算法是指对特定问题求解步骤的一种描述。
想要学好算法,一本专业的有趣的书籍,即可以帮助学习,又可以让人有读下去的欲望。
网上的算法教程杂乱且分散,质量层次不齐,浪费了大家大量宝贵的时间。很多题解,在我掌握题目后去看都费劲,更何况对于一些初学者。
今天小编在这分享两份算法宝典助力大家拿offer,一份在GitHub上35k多次登上Github Trending榜首的算法宝典,另外一份在某平台上阅读超11w+的算法刷题宝典,话不多说让我们跟着字节大佬一起团灭LeetCode和面试官,感受一下支配算法的乐趣。
由于篇幅原因,为了避免影响到大家的阅读体验,在此只以截图展示部分内容
我们最火的就是动态规划系列的文章,也许是动态规划问题有难度而且有意思,也许因为它是面试常考题型。不管你之前是否害怕动态规划系列的问题,相信这一章的内容 足以帮助你消除对动态规划算法的恐惧。
主要是一些特殊的数据结构设计,比如单调栈解决Next GreaterNumber,单调队列解决滑动窗口问题;还有常用数据结构的操作,比如链表、树、二叉堆。
包含一些常用的算法技巧,比如前缀和、回溯思想、位操作、双指针如何正确书写二分查找等等。
8说了,本章都是高频面试题,配合前面的动态规划系列,祝各位马到成功!
我们刷算法就是为了面试,说白了,算法不过是手段,是套路,是策略, 而不是最终目的。我们的最终目的是赚钱,是让我们自己以及我们的家庭过上更好的生活,所以熟练掌握工作中的常用工具,得心应手地做业务赚钱才是王道。
掌握!所有的题解都以掌握二字为前提。不会追求过多的奇淫技巧,毕竟我们不是专门研究算法的人。我见过太多算法初学者,一个题解看不懂,转头又去看第二个题解,第二个看不懂,又去看第三个,直到最后放弃掉。浪费了时间,题目还是不会做,这图什么呢?所以本教程所有的题解都是以掌握为目标,尽量把每一道题的思路都讲的明明白白的。
两数之和
环形链表
打家劫舍
字符串中的第一个唯一字符
二叉树的剪枝
找到字符串中所有字母异位词
按奇偶排序数组
缺失数字
第一个错误的版本
Nim游戏