算法
文章平均质量分 91
xushiyu1996818
这个作者很懒,什么都没留下…
展开
-
排列组合总结
目录简介P 的由来C 的由来组合数的公式直观解释组合公式Ⅰ组合公式Ⅱ组合公式Ⅲ组合公式Ⅳ组合公式Ⅴ参考了 https://www.zhihu.com/question/26094736简介排列组合是组合学最基本的概念。所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序。组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。排列组合的中心问题是研究给定要求的排列和组合可能出现的情况总数。 排列组合与古典概率论关系密切。P 的由来..原创 2020-06-22 16:22:47 · 2705 阅读 · 0 评论 -
倒排索引总结
目录倒排索引简介Elasticsearch 建立倒排索引参考了 https://www.cnblogs.com/cjsblog/p/10327673.html倒排索引简介倒排索引(Inverted Index)也叫反向索引,有反向索引必有正向索引。通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key。先来回忆一下我们是怎么插入一条索引记录的:curl -X PUT "localhost:9200/user/_doc/1" -H 'Content-..原创 2020-06-22 09:56:28 · 863 阅读 · 0 评论 -
双层桶总结
参考 https://blog.csdn.net/zhongguoren666/article/details/7094759什么是双层桶事实上,与其说双层桶划分是一种数据结构,不如说它是一种算法设计思想。面对一堆大量的数据我们无法处理的时候,我们可以将其分成一个个小的单元,然后根据一定的策略来处理这些小单元,从而达到目的。适用范围第k大,中位数,不重复或重复的数字基本原理及要点因为元素范围很大,不能利用直接寻址表,所以通过多次划分,逐步确定范围,然后最后在一个可以接受的范围内进..原创 2020-06-21 17:23:37 · 331 阅读 · 0 评论 -
大数据量,海量数据 处理方法总结
目录Bloom filterHashingbit-map堆双层桶划分分而治之/hash映射 + hash统计 + 堆/快速/归并排序数据库索引倒排索引(后缀树)trie树外排序分布式处理 mapreduce经典问题分析参考了 https://blog.csdn.net/zuiaituantuan/article/details/5900981https://blog.csdn.net/hzp666/article/details/70236606..原创 2020-06-19 17:22:29 · 1731 阅读 · 0 评论 -
10进制转换为2进制和16进制
public class Main4{ public static void main(String[] args) { Main4 solution = new Main4(); // "0000000000001111,000F" System.out.println(solution.changeFormatNumber("15")); // "1111111111111111,FFFF" System.out.println(solution.changeForm.原创 2020-06-18 21:45:38 · 1681 阅读 · 0 评论 -
大数据Top K 总结
目录TOP k 问题1亿个数字中找出最大或最小的前100个数字方法1:全部排序方法2:局部淘汰法插入容器后的操作局部淘汰法的去重方法3:分治法分治-快排划分分治-排序分治-堆排序合并结果方法4:Hash法BitMap计数排序方法5:最小堆实际场景(1)单机+单核+足够大内存(2)单机+多核+足够大内存(3)单机+单核+受限内存(4)多机+受限内存HadoopTOP k 问题在大规模数据处理中,经常会遇到的一类问题:在原创 2020-06-17 16:27:04 · 1942 阅读 · 0 评论 -
java递归生成菜单树
目录mysql表创建对应的实体类主程序调用递归组装树形结构函数实现mysql表数据自行准备CREATE TABLE `sys_menu` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pid` bigint(20) DEFAULT NULL, `title` varchar(255) CHARACTER SET utf8 DEFAULT NULL, `path` varchar(255) CHARACTER SET utf8原创 2020-06-04 16:57:50 · 563 阅读 · 0 评论 -
二分查找算法细节与查找左右侧边界
目录二分查找的框架寻找一个数(基本的二分搜索)寻找左侧边界的二分搜索寻找右侧边界的二分查找最后总结我周围的人几乎都认为二分查找很简单,但事实真的如此吗?二分查找真的很简单吗?并不简单。看看 Knuth 大佬(发明 KMP 算法的那位)怎么说的: Although the basic idea of binary search is comparatively st...转载 2019-10-10 15:38:11 · 11602 阅读 · 12 评论 -
分支限界算法总结
目录分支限界算法简介分支限界法思想分支限界算法与回溯法的区别分支限界算法的一般步骤常见的两种分支限界法队列式(FIFO)分支限界法优先队列式分支限界法分支限界算法简介分支限界算法是按照广度优先的方式对解空间树(状态空间树)进行搜索,从而求得最优解的算法。在搜索的过程中,采用限界函数(bound function)估算所有子节点的目标函数的可能取值...原创 2019-06-11 16:43:59 · 9374 阅读 · 0 评论 -
动态规划总结
目录动态规划简介递归记忆化搜索状态和状态转移 子问题,最优子结构,最优化原理决策和无后效性简介动态规划的经典模型线性模型区间模型状态压缩模型树状模型动态规划的常用状态转移方程1D/0D1D/1D2D/0D2D/1D2D/2D复杂度动态规划和数据结构结合的常用优化滚动数组缩小子问题的解的范围单调队列优化...原创 2019-06-05 16:32:49 · 1344 阅读 · 0 评论 -
回溯算法总结
目录回溯算法简介回溯算法中的三个概念回溯算法的步骤具体流程代码实现框架经典例子选取数字集合皇后问题最大 k 乘积问题回溯算法简介回溯法是一种类似枚举的搜索尝试过程,既然是枚举,那么就会遍历解空间树中的所有解(或者是“路径”),搜索的过程按照DFS原则,而尝试就意味着,在遍历的过程中,有可能到达某一个结点后,发现不能够满足约束条件,在这次尝试中,这条“路”...原创 2019-06-10 16:42:55 · 1735 阅读 · 0 评论 -
贪心算法总结
目录贪心算法简介存在的问题基本思路算法实现算法框架贪心算法适用的问题贪心算法的经典例题最小生成树错误样例:背包算法均分纸牌最大整数分糖果摇摆序列移除K个数字贪心算法简介贪心算法,思路也是非常简单的,每一步总是做出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。基本思路就是...原创 2019-06-03 15:06:22 · 2549 阅读 · 0 评论 -
外部排序算法总结
目录多路归并排序基本思想两两归并排序多路归并排序胜者树败者树败者树的建立与调整败者树的java代码败者树的效率 我们一般提到排序都是指内排序,比如快速排序,堆排序,归并排序等,所谓内排序就是可以在内存中完成的排序。RAM的访问速度大约是磁盘的25万倍,我们当然希望如果可以的话都是内排来完成。但对于大数据集来说,内存是远远不够的,这时候就涉及到外排序的知识了...原创 2018-12-10 11:18:52 · 27292 阅读 · 2 评论 -
十大排序算法总结 内部排序
目录排序测试模板一、冒泡排序总体思想编程思想复杂度及优缺点优化二、选择排序总体思想编程思想复杂度及优缺点三、插入排序总体思想编程思想复杂度及优缺点四、希尔排序总体思想编程思想复杂度及优缺点五、归并排序总体思想编程思想复杂度及优缺点六、快速排序总体思想编程思想复杂度及优缺点七、堆排序总体...原创 2018-12-10 09:42:37 · 6402 阅读 · 2 评论 -
位运算总结-java版
目录位运算简介正负数在二进制中的显示机器数和真值机器数真值原码,反码和补码原码反码补码为什么要有原码,反码和补码补码与原码互相转换原码到补码补码到原码java中的数字的底层结构java位运算符按位与(&)按位或(|)按位异或(^)与、或、亦或 与负数按位取反(~)按位左移(<< )右移(&...原创 2019-05-13 16:14:59 · 437 阅读 · 0 评论 -
敏感词过滤-DFA算法
目录DFA算法简介Java实现DFA算法实现敏感词过滤测试方法创建DFAMap根据DFAMap进行检验完整代码DFA算法简介在实现文字过滤的算法中,DFA是唯一比较好的实现算法。DFA即Deterministic Finite Automaton,也就是确定有穷自动机,它是是通过event和当前的state得到下一个state,即event+state=nextst...原创 2019-04-15 16:08:29 · 11910 阅读 · 0 评论 -
kmp算法总结-java版
目录部分匹配表(PMT)(Next数组)介绍通俗介绍数学介绍推导出next数组使用next数组进行字符串匹配测试部分匹配表(PMT)(Next数组)介绍通俗介绍有些算法,适合从它产生的动机,如何设计与解决问题这样正向地去介绍。但KMP算法真的不适合这样去学。最好的办法是先搞清楚它所用的数据结构是什么,再搞清楚怎么用,最后为什么的问题就会有恍然大悟的感觉。我试着从...原创 2019-04-16 16:49:03 · 405 阅读 · 0 评论 -
查找算法总结-java版
目录查找定义查找算法分类平均查找长度(Average Search Length,ASL)顺序查找顺序查找的基本思想顺序查找的代码顺序查找的复杂度二分查找二分查找的基本思想二分查找的代码二分查找的复杂度插值查找插值查找的基本思想插值查找的代码插值查找的复杂度斐波那契查找斐波那契查找的基本思想斐波那契查找的代码斐波那契查找的...原创 2019-05-31 11:05:47 · 3498 阅读 · 1 评论 -
java 求int平均值防止溢出
方法1start + (end - start) / 2方法2int mid = (start + end) >>> 1它通过移位实现了除以 2,但。。。这样难道不会导致溢出吗?首先大家可以补一下 补码 的知识。其实问题的关键就是这里了>>> ,我们知道还有一种右移是>>。区别在于>>为有符号右移,右移以后最...原创 2019-05-27 17:48:09 · 1075 阅读 · 1 评论 -
背包问题(动态规划)总结-java版
目录问题描述0-1背包多重背包完全背包问题描述一个背包的总容量为V,现在有N类物品,第i类物品的重量为weight[i],价值为value[i]那么往该背包里装东西,怎样装才能使得最终包内物品的总价值最大。这里装物品主要由三种装法:1、0-1背包:每类物品最多只能装一次2、多重背包:每类物品都有个数限制,第i类物品最多可以装num[i]次3、完全背包:每类物品...原创 2019-06-12 15:52:22 · 1179 阅读 · 0 评论 -
分治算法总结
目录简介基本策略适用情况基本步骤复杂性分析依据分治法设计程序时的思维过程典型例子快速排序归并排序汉诺塔 简介在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。任何一个可以用...原创 2019-06-06 10:38:22 · 28237 阅读 · 2 评论 -
哈希(散列,Hash)算法总结-java版
目录哈希算法简介哈希算法的分类加法Hash位运算Hash乘法Hash除法Hash查表Hash混合Hash常用的哈希算法直接寻址法数字分析法平方取中法折叠法随机数法除留余数法流行的哈希算法MD4MD5SHA及其他碰撞性哈希算法在java中的使用ObjectIntegerLongStringHa...原创 2019-05-08 11:13:54 · 2326 阅读 · 0 评论