![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
丁大勺
快乐每一天
展开
-
布隆过滤器BloomFilter
Bloom Filter 概念布隆过滤器(Bloom Filter)是1970年由一个叫布隆的小伙子提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。Bloom Filter 原理布隆过滤器的原理是,当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为1。检索时,我们只要看看这些点是不是都是1就(大约)知道集合中有没有它了:如转载 2020-05-25 21:50:44 · 145 阅读 · 0 评论 -
算法——回溯算法
解决一个回溯问题,实际上就是一个决策树的深度优先遍历过程。你只需要思考 3 个问题:1、路径:也就是已经做出的选择。2、选择列表:也就是你当前可以做的选择。3、结束条件:也就是到达决策树底层,无法再做选择的条件。回溯算法的模板:result = []def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) ...原创 2020-04-14 11:26:18 · 107 阅读 · 0 评论 -
算法——动态规划
动态规划要点典型题目一、最长公共子序列题目地址:LeetCode1143给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序...原创 2020-04-13 12:03:49 · 231 阅读 · 0 评论 -
算法——二分查找
一、查找小于给定目标值的最大值int binarysearch(int target, int[] arr){ int left = 0; int right = arr.length-1; while(left < right){ int mid = (left + right)/2 + 1; //注意 if(arr[mid]...原创 2020-04-12 21:34:42 · 135 阅读 · 1 评论