
算法
丁大勺
快乐每一天
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
布隆过滤器BloomFilter
Bloom Filter 概念 布隆过滤器(Bloom Filter)是1970年由一个叫布隆的小伙子提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。 Bloom Filter 原理 布隆过滤器的原理是,当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为1。检索时,我们只要看看这些点是不是都是1就(大约)知道集合中有没有它了:如转载 2020-05-25 21:50:44 · 195 阅读 · 0 评论 -
算法——回溯算法
解决一个回溯问题,实际上就是一个决策树的深度优先遍历过程。 你只需要思考 3 个问题: 1、路径:也就是已经做出的选择。 2、选择列表:也就是你当前可以做的选择。 3、结束条件:也就是到达决策树底层,无法再做选择的条件。 回溯算法的模板: result = [] def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) ...原创 2020-04-14 11:26:18 · 181 阅读 · 0 评论 -
算法——动态规划
动态规划要点 典型题目 一、最长公共子序列 题目地址:LeetCode1143 给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。 例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序...原创 2020-04-13 12:03:49 · 329 阅读 · 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 · 259 阅读 · 1 评论