小破站,记录和学习
布隆过滤器 布隆过滤器
布隆过滤器是大数据领域一个经常用到的算法。如果看过《数学之美》的同学对它应该并不陌生,它经常用在集合的判断上,在海量数据的场景当中用来快速地判断某个元素在不在一个庞大的集合当中。它的原理不难,但是设计非常巧妙。一般的业务场景用不上布隆过滤器
2020-08-23
LRU淘汰算法 LRU淘汰算法
在应用系统中,常需要把热点数据存储到缓存中,减少磁盘的交互,为了节约内存,我们通常只存储热点数据,而动态的淘汰访问量较少的数据。这里就需要用到淘汰算法,redis的缓存数据失效机制就是一个很好的淘汰算法例子,我们知道redis数据默认有效时
2020-08-22
LeetCode-最长有效括号 LeetCode-最长有效括号
在地铁上刷力扣时,无意中看到这个题。题目描述挺简单的,然后动脑想想感觉也挺简单的,但是实际动手写代码起来,却怎么运行怎么不对。最后花了两个下午才把它做出来,我的解题方式和官网提供的解题思路都不一样,自创解法,虽然能解题,但是思路不通用,感觉
2020-07-12
动态规划算法 动态规划算法
乔治·桑塔亚纳说过,“那些遗忘过去的人注定要重蹈覆辙。”这句话放在问题求解过程中也同样适用。不懂动态规划的人会在解决过的问题上再次浪费时间,懂的人则会事半功倍。那么什么是动态规划?这种算法有何神奇之处?对于动态规划我虽然早有耳闻,但一直未曾
2020-07-08
LeetCode-迷宫问题 LeetCode-迷宫问题
上篇说到广度优先搜索算法,今天就来做一个应用广度优先算法的力扣算法题吧。这个题是力扣上很常见的求最短路径类型的算法题,对于这种题如果没有解题的算法思路,看到题基本就是脑子一片空白,无从下手的关键。但是使用广度优先搜索算法去求解它时,代码实现
2020-05-28
广度优先搜索算法BFS 广度优先搜索算法BFS
最近在看到力扣上一道推箱子算法题时,思考了很久也想不到解题思路。于是查了一下推箱子的解题思路,便查到了广度优先搜索算法(BFS),广度优先搜索算法专门用于解决最短路径问题,其算法思路也很简单。而推箱子问题就可以用广度搜索算法解决,与它类似的
2020-05-27
LeetCode-求两数组的中位数 LeetCode-求两数组的中位数
继续一天一个算法题,额….这个要求真的有点高 o(╥﹏╥)o ,今天这个算法题在LeetCode上是一个困难级别的题,我在看完这个题后基本上有了个大概的思路,然而理想很丰满,现实很骨感,用代码实现算法却用了一天多。这里记录一下我的解题思路
2020-04-22
LeetCode-两数相加 LeetCode-两数相加
在代码的世界中有一句名言,即程序=数据结构+算法。工作中大部分开发其实都用不到多高深的算法,因为前辈们已经造好了各种高级轮子,我们要做的仅仅只需要调用他们封装好的API就行了。这样就算不懂这些知识,只要Java API、开发框架用得熟练,照
2020-04-19
手写快速排序 手写快速排序
快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行
2020-04-18
常见算法思想总结 常见算法思想总结
做开发的对于算法这个词都不陌生,每当谈论到某人是个算法工程师,某人写了个什么厉害的算法。都会不由得对他产生敬意,有人说,程序=数据结构+算法。虽然有失偏颇,但足以体现出算法的重要性。那什么是算法呢,它可以是一个公式,一个食谱,一本操作手册,
2020-03-22