- 博客(19)
- 资源 (5)
- 收藏
- 关注
原创 使用 LinkedHashMap 实现 LRU 算法
LRU是Least Recently Used 的缩写,翻译过来就是“最近最少使用”,LRU缓存就是使用这种原理实现,简单的说就是缓存一定量的数据,当超过设定的阈值时就把一些过期的数据删除掉,比如我们缓存10000条数据,当数据小于10000时可以随意添加,当超过10000时就需要把新的数据添加进来,同时要把过期数据删除,以确保我们最大缓存10000条。LinkedHashMap自身已经实现了LR
2017-07-20 15:38:42
492
原创 二叉查找树(Binary Search Tree)
二叉查找树(英语:Binary Search Tree),也称二叉搜索树、有序二叉树(英语:ordered binary tree),排序二叉树(英语:sorted binary tree),是指一棵空树或者具有下列性质的二叉树: 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 任意节
2017-07-19 11:07:25
837
原创 两个有序数组合并为一个有序数组
把两个有序数组合并为一个有序数组,例如: 数组A:1,2,2,3,5,6,7,7 数组B:1,2,4,5,8,8,9,10,11,12,12,13,14 合并后应该为: 1, 1, 2, 2, 2, 3, 4, 5, 5, 6, 7, 7, 8, 8, 9, 10, 11, 12, 12, 13, 14以下是示例代码:public void mergeA
2017-07-18 18:24:33
1588
原创 最大连续子数组和
输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值,要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2, 因此输出为该子数组的和18。public void MaxSubArray(){ int[] a = {1, -2
2017-07-18 18:09:06
391
原创 数对之差的最大值
数组中某数字减去其右边的某数字得到一个数对之差,求所有数对之差的最大值,注意,算法的时间复杂度必须小于O(N2{^2})。 提示:是可以做到O(NlogN)的例如: 数组{ 2,4,1,17,7,5,11,9,3,9,1,18,4,4 }中,数对之差的最大值是16(17-1) 可能我们会想这个问题很简单嘛,就是轮询去找最大值和最小值,然后相减不就是数对之差最大值了吗!其实完全不是,你怎么能确
2017-07-18 16:17:24
1299
转载 【坐在马桶上看算法】算法12:堆——神奇的优先队列(下)
这位朋友写的特别好,忍不住转发 :-) http://ahalei.blog.51cto.com/4767671/1427156接着上一Pa说。就是如何建立这个堆呢。可以从空的堆开始,然后依次往堆中插入每一个元素,直到所有数都被插入(转移到堆中为止)。因为插入第i个元素的所用的时间是O(log i),所以插入所有元素的整体时间复杂度是O(NlogN),代码如下。其实我们还有更快得方
2017-07-17 15:28:28
624
转载 【坐在马桶上看算法】算法11:堆——神奇的优先队列(上)
这位朋友写的特别好,忍不住转发 :-) http://ahalei.blog.51cto.com/4767671/1425314堆是什么?是一种特殊的完全二叉树,就像下面这棵树一样。有没有发现这棵二叉树有一个特点,就是所有父结点都比子结点要小(注意:圆圈里面的数是值,圆圈上面的数是这个结点的编号,此规定仅适用于本节)。符合这样特点的完全二叉树我们称为最小堆。反之,如果所有父结点都比子结点要大,这
2017-07-17 13:38:04
509
转载 【坐在马桶上看算法】算法10:二叉树
这位朋友写的特别好,忍不住转发 :-) http://ahalei.blog.51cto.com/4767671/1414035 二叉树是一种特殊的树。二叉树的特点是每个结点最多有两个儿子,左边的叫做左儿子,右边的叫做右儿子,或者说每个结点最多有两棵子树。更加严格的递归定义是:二叉树要么为空,要么由根结点、左子树和右子树组成,而左子树和右子树分别是一棵二叉树。 下面这棵树就是一棵二叉树。二叉
2017-07-17 11:16:56
475
原创 Dynamic Programming动态规划之收集苹果
动态规划(英语:Dynamic programming,简称DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题[1]和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。 动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题
2017-07-17 10:49:42
656
原创 是否字符串A包含字符串B的所有字母(区分大小写,算个数,不算顺序)
是否字符串A包含字符串B的所有字母(个数也算),比如: 举例说明 字符串A:aaabcdefgamm 字符串B:mama 比较结果:A包含B,因为A有两个a和两个m(A有4个a,但两个就够了)。 字符串A:aaabcdefga 字符串B:mama 比较结果:A不包含B,因为A没有m。 字符串A:aaabcdefgm 字符串B:ma
2017-07-14 09:36:59
1347
原创 Big O notation大零符合 入门讲解
Big O notation大零符号一般用于描述算法的复杂程度,比如执行的时间或占用内存(磁盘)的空间等,特指最坏时的情形。 Linus Torvalds说过“Talking is cheap, show me the code.”,那我们直接从代码(Python)上来学习Big O吧。O(1) def isFirstElementNull(elements, value): r
2017-07-11 21:04:44
17486
原创 条件概率的逆问题 - 贝叶斯公式
简单来讲,逆问题是指那些需要从结果反推原因的问题,通常,问题X无法被直接观察、测量,此时,我们常会通过其结果Y来反推原因X。通信:根据含有噪声的接受信号Y推测发送信号X语音识别: 根据麦克风识别的音频波形数据Y推测语音信息X文字识别:根据扫描仪读取的图像数据Y推测用户书写的文字X邮件自动过滤: 根据收到的邮件文本Y推测邮件的类型X(是否广告等)我们来看看这个例子在某个角色扮演游戏中,玩家
2016-12-19 13:53:43
4555
原创 条件概率
本文绝大多数内容节选于《程序员的数学2 概率统计》 在实际生活中,许多有价值的变量都能以条件概率这一概念来表述,比如含免费这一单词的邮件很可能是广告,这种○○条件下事件××的概率称为条件概率。
2016-12-15 21:34:22
2154
原创 概率是一种面积
本文绝大多数内容节选于《程序员的数学2 概率统计》 我们来说说抛硬币的事儿,抛一次,则正面和反面的概率都是0.5,抛两次也是一样,见下图: 由于概率是一种面积,因此它不可能为负。此外,由于整体的面积为1,因此概率的最大值是1。我们可以得出结论,抛两次硬币正正的概率是1/4,反反的概率是1/4,而正反的概率则是1/4+1/4=1/2。 也可以这样求:P(正面)=0.5,P(反面)=0.5,所
2016-12-15 21:24:20
1763
原创 联合概率与边缘概率
本文绝大多数内容节选于《程序员的数学2 概率统计》假设有随机变量X于Y,此时,P(X=a, Y=b)用于表示X=a且Y=b的概率。这类包含多个条件且所有条件同时成立的概率称为联合概率。请大家特别注意,联合概率并不是其中某个条件成立的概率,而是所有条件同时成立的概率。与之对应地,P(X=a)或P(Y=b)这类仅于单个随机变量有关的概率称为边缘概率。联合概率与边缘概率大关系如下: P(X=a) = ∑
2016-12-12 20:07:27
12463
原创 有趣的三扇门问题(Monty Hall Problem)
本文很多内容节选于《程序员的数学2 概率统计》在刚开始学概率论的时候,估计都接触过三扇门问题,今天我们也来聊聊,其实这个问题特别有趣,故事是这样的: 美国有一个电视游戏节目叫Let’s Make a Deal,主持人是蒙提霍尔。他身后有三扇门,其中两扇门后面是山羊,一扇门后面是汽车。先让挑战者随意选一扇门,这样还剩两扇,这两扇中肯定有一扇后面是山羊,然后主持人把山羊前的门打开。注意,还有剩两扇门
2016-11-21 23:05:29
4823
原创 Ejabberd Gateway
2008-2-28 Install Components and Transports for Other Protocols(you can search these software from GOOGLE) download Python-2.5.1.tgz download zope.interface-3.3.0.tar.gz download Twisted-2.5.
2009-11-05 16:34:00
824
原创 Cluster ejabberd
2007-12-4 Cluster ejabberdfor example, we want to do a cluster for two machines.1. Ejabberd server namewe must have one name of ejabberd server, Fox example “cluster.com”2. Node namewe nee
2009-11-05 15:49:00
2178
1
原创 Install Ejabberd
2007-8-27 http://www.process-one.net/docs/ejabberd/guide_en.html 1. download the installation file from website. ejabberd-1.1.3 4-linux-x86-installer.bin 2. run the file. 3. select t
2009-11-05 15:36:00
628
SQLServer 数据库比较工具 V0.96
2009-11-09
SQLServer 数据库比较工具V0.95(附源代码)
2009-11-05
SQL Server 数据库比较工具
2009-10-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人