算法
CaseyZ
这个作者很懒,什么都没留下…
展开
-
Algorithm: Bags, Queues, and Stacks
Stack. Examine the item most recently added LIFO: last in first outQueue. Examine the item least recently added FIFI: first in first outStack pop:Stack push:Using ar原创 2015-01-03 11:08:20 · 440 阅读 · 0 评论 -
TOP K问题
前面的文章提到查找最小的k个元素。这里将题目改为查找最大的k个元素。这个题目较之前更具有实际意义,例如我们可以设计搜索引擎的热门查询统计,返回海量的搜索记录中最常被搜索的词条。我们认为在数据集中出现次数最多的为最热门的搜索词条。下面是一道百度的面试题 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。 假设目前原创 2015-02-05 00:48:19 · 421 阅读 · 0 评论 -
查找最小的k个元素
目标:给定一个整型序列,找到最小的k个元素例如:3,2,5,6,2,1,7,8 。若k=3,则返回1,2,3思路1. quickSort先对序列进行排序,花费O(nlog)时间,然后取出k个元素,花费O(k)时间,所以总的时间为O(k+nlogn)2. 首先遍历序列前k个元素,存放到一个数组中,利用选择或交换排序,找出这k个数中的最大数k_max,所花O(k)时间。然后再遍原创 2015-01-26 00:45:52 · 667 阅读 · 0 评论 -
左旋字符串
目标:rotate(s,m)将字符串s的前m位左旋至末尾。例:s = abcdefghijkrotate(s,3) = defghijkabc思路:1. 假设字符串s需要调整位置,设置指针p1指向s起点,p2指向起点+m的位置,这里p1->a, p2->d。2. 交换p1和p2指向的元素,同时让p1++, p2++。 这样的动作持续 k = (n-m) - (n%m) 次,原创 2015-01-24 22:10:18 · 450 阅读 · 0 评论 -
Quicksort
此前用Java写了个快排的程序,这里用的是C++写的。Quicksort1. Divide & Conquer2. Sort in-place, which is usage efficient (other eg. insertion sort, O(n^2)), mergesort is not in-place sort because it needs extra s原创 2015-02-04 10:32:45 · 306 阅读 · 0 评论 -
Dijkstra算法
由于学校的机器学习课程马上要讲搜索,涉及到A*算法,索性自己先找来资料读。A*算法是启发式算法的一种,启发式算法是在当前节点搜索下一个节点的时候,利用一个启发式函数,选择cost最少的点,作为下一个去到的地方。(这里是说有很多个点可以选择作为下一跳,但我们想找到一个best point)A*算法可以在平面上,找到一条经过多个节点的,成本最少的路径。f(n) = g(n)原创 2015-01-29 11:25:24 · 526 阅读 · 0 评论 -
辗转相除法
GCD:辗转相除法,求两个正整数的最大公约数。gcd(m,n) = gcd(n,m mod n) [a>b且 a mod b不等于0]步骤:1. 求余数r = m%n 2. 若r=0,则算法结束,此时的n就为m和n的最大公约数。3. 否则,令m = n, n = r,返回第一步。原创 2015-01-24 20:05:47 · 321 阅读 · 0 评论 -
字符串包含问题
问题描述:两个字符串S1和S2,假设S1长度大于等于S2长度,判断S2是否为S1的一个子集。例如:S1=ABCDEFGHI, S2=ACEFG,由于S2中的每个元素都出现在S1中,说明S1包含S2.若S2=ACEFGK, 由于K不在S1中,因此S1不包含S2。设S1长度为m,S2长度为n方法1:Brute-Force 两个for loop,复杂度为O(m*n)原创 2015-01-25 01:14:11 · 391 阅读 · 0 评论 -
KMP
字符匹配问题。因为项目需要,在字符串中查找是否有某段特定的字符出现,想起前段时间看的KMP算法,于是总结一下以免忘记了。例如:字符串s: BDABCDABACD. 模式串p: ABA,因为s中有一小段字符串与模式串ABA相同,在s的第6位(初始为0),否则查找失败。给s和p分别设置一个指针i,j = 0一般的匹配过程是:一开始BDABCDABACDABA发现s[0]原创 2015-01-26 14:28:22 · 359 阅读 · 0 评论 -
最小生成树(Prim)
public class Mst { int numberofNode; int[] lowcost; ArrayList closedSet; ArrayList edge; ArrayList V; int[][] map;//无向图 public Mst(int numberofNode){ map = new int[numberofNode][numberofNode]原创 2015-02-13 01:24:37 · 387 阅读 · 0 评论