算法
DoubleWeiWei001
这个作者很懒,什么都没留下…
展开
-
两个队列实现栈(stack)
//前提已知:struct Stack{ int top; //栈顶指针 int stacksize;//栈的大小 int *s; //栈底指针};void InitStack(Stack *s);void Push(Stack *s, int k);int Pop(*s);int IsStackEmpty(*s);int转载 2017-12-01 15:34:37 · 212 阅读 · 0 评论 -
最长回文子串——Manacher 算法
0. 问题定义最长回文子串问题:给定一个字符串,求它的最长回文子串长度。如果一个字符串正着读和反着读是一样的,那它就是回文串。下面是一些回文串的实例:12321 a aba abba aaaa tattarrattat(牛津英语词典中最长的回文单词)1. Brute-force 解法对于最长回文子串问题,最简单粗暴的办法是:找到字符串的所有子串,遍历每一个子串以验证它们是否为回文串。一个子串由子串...转载 2018-04-12 16:40:00 · 235 阅读 · 0 评论 -
怎么在海量数据中找出重复次数最多的一个
1、海量日志数据,提取出某日访问百度次数最多的那个IP。 此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。 再详细介绍下此方案:首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个 IP。同样可以采用映射的方法,比如模1000...转载 2018-04-15 23:58:39 · 1307 阅读 · 0 评论 -
图解B树和B+树的插入和删除操作
转载地址摘要: 一, M阶B+树的定义(M阶是指一个节点最多能拥有的孩子数,M>2): 图1.1 3阶B+树 (1)根结点只有1个,分支数量范围[2,m]。 (2)除根以外的非叶子结点,每个结点包含分支数范围[[m/2],m],其中[m/2]表示取大于m/2的最小整数。一, M阶B+树的定义(M阶是指一个节点最多能拥有的孩子数,M>2):图1...转载 2018-04-14 22:43:22 · 15257 阅读 · 7 评论 -
基数排序
转载地址:https://blog.csdn.net/lemon_tree12138/article/details/51695211基数排序数据背景在基数排序中,我们不能再只用一位数的序列来列举示例了。一位数的序列对基数排序来说就是一个计数排序。 这里我们列举无序序列 T = [ 2314, 5428, 373, 2222, 17 ]排序原理上面说到基数排序不需要进行元素的比较与交换。如果你有一...转载 2018-03-26 16:09:53 · 168 阅读 · 0 评论 -
排序算法实现
参考:https://www.cnblogs.com/onepixel/articles/7674659.html这是基本上常用的所有的排序算法的总结,如下表:下面是自己对一些算法的实现:package 排序;public class Order { public void maoPao(int []arr){ //冒泡排序,每次比较相邻元素,如果前面的比后面的大,那么就交换,第一次遍...原创 2018-03-26 13:59:45 · 145 阅读 · 0 评论 -
判断链表是否有环,有环时环的入口点,链表交点
一个链表中包含环,请找出该链表的环的入口结点。此问题包含两个步骤:(1)判断链表中是否有环(2)找出环一、1)选择快慢指针,让快指针每次走两步,慢指针每次走一步,若是单链表中有环的话,那么两个指针会相遇,即指向的相同的节点的值相等来判断。2)当相遇的时候,慢指针在环中走了k步,设环之外的部分长为x,环的长度为n,则快指针一共走了 x+m*n步,(m为快指针在环中走的圈数),慢指针一共走了x+k步,...转载 2018-03-26 01:46:15 · 183 阅读 · 0 评论 -
求N个数中前k个大的数
解题思路:一般思路就是将N个数排序后,取前k个数就ok。但是如果N个数是几十亿个数,加载不到内存怎么办?这时候就需要利用堆来解决这个问题具体的思路是:先建一个k个数的小堆,然后从k+1个数往后的值与堆顶元素比较,若此数比堆顶元素大,就将堆顶元素用这个数替换,然后重新调整堆,以此向后重复上述过程,直到将N个数比较完成,那么此时组成这个堆的k个元素就是前k个大的数。接下来我们讲一下最小堆与最大对堆的思...原创 2018-03-22 16:53:54 · 4458 阅读 · 0 评论 -
合并两个有序链表
(1)递归实现1.对空链表存在的情况进行处理,假如pHead1为空则返回pHead2,pHead2为空则返回pHead1。(两个都为空此情况在pHead1为空已经被拦截)2.比较两个链表第一个结点的大小确定头结点的位置3.头结点确定后 继续在剩下的结点中 选出下一个结点去链接到第二步选出的结点后面,然后在继续重复2 3步 直到有链表为空举个实例:有有序单链表L1 (1 3 5 7 ), ...原创 2018-03-22 14:57:39 · 171 阅读 · 0 评论 -
二叉搜索树
首先在这里贴上一篇关于二叉查找树的博文:http://blog.csdn.net/u013405574/article/details/51058133然后这里有java实现的二叉搜索树的代码:http://blog.csdn.net/lingzhm/article/details/44497191自己对代码进行了验证,也进行了些许的修改,基本上没有什么问题,可以进行增删改转载 2018-01-04 11:30:05 · 103 阅读 · 0 评论 -
从给定的N个数中得到满足K数的所有数字,时间复杂度O(n)
完原创 2017-12-18 15:13:25 · 411 阅读 · 0 评论 -
一致性hash详解
转载地址:https://www.cnblogs.com/lpfuture/p/5796398.html其中在查找时还看到一篇比较可以文章:https://blog.csdn.net/cywosp/article/details/23397179/一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(H...转载 2018-05-18 10:59:58 · 4504 阅读 · 0 评论