数组的最大连续子序列
摘要:今天在网上看到的这道题目:一个有N个元素的整型数组arr,有正有负,数组中连续一个或多个元素组成一个子数组,这个数组当然有很多子数组,求子数组之和的最大值。例如:[0,-2,3,5,-1,2]应返回9,[-9,-2,-3,-5,-3]应返回-2。开始感觉貌似也没有那么难,就直接想循环遍历+动态规划的...
阅读全文
posted @
2014-08-08 20:13
晓O(∩_∩)O~
阅读(962)
推荐(0)
字符串匹配算法
摘要:今天一天鼓捣了两种字符串匹配的算法,KMP算法和BM算法,说实话,BM算法还是第一次听说,以前只知道BM算法的说,总之一句话,要学习的还是很多的,看了BM算法,只能感叹作者的高大上了。看了好几篇文章,终于算是把BM算法实现了,并且调试运行成功了,把这学习的经过记录下来,聊表纪念。 1 #inclu...
阅读全文
posted @
2014-08-04 21:14
晓O(∩_∩)O~
阅读(341)
推荐(0)
Remove Duplicates from Sorted Array II
摘要:Remove Duplicates from Sorted Array IIFollow up for "Remove Duplicates":What if duplicates are allowed at mosttwice?For example,Given sorted array A =...
阅读全文
posted @
2014-07-30 18:45
晓O(∩_∩)O~
阅读(189)
推荐(0)
Linked List Cycle II
摘要:题目描述:Given a linked list, return the node where the cycle begins. If there is no cycle, returnnull.Follow up:Can you solve it without using extra spac...
阅读全文
posted @
2014-07-30 16:31
晓O(∩_∩)O~
阅读(230)
推荐(0)
Maximal Rectangle&Largest Rectangle in Histogram
摘要:这两天在做leetcode的题目,最大矩形的题目以前遇到很多次了,一直都是用最笨的方法,扫描每个柱子,变换宽度,计算矩形面积,一直都以为就这样O(n2)的方法了,没有想到居然还有研究出了O(n)的算法,真是对GeeksForGeeks大神膜拜啊。首先是Largest Rectangle in His...
阅读全文
posted @
2014-07-30 15:37
晓O(∩_∩)O~
阅读(230)
推荐(0)
最长回文字串
摘要:研究了一下便于记忆的两种回文字串方法,代码如下:#include #include using namespace std;//最大回文字串,有如下方法://http://blog.csdn.net/linulysses/article/details/5634104//动态规划法/*xPy肯定不是...
阅读全文
posted @
2014-07-30 15:17
晓O(∩_∩)O~
阅读(253)
推荐(0)
图相关算法
摘要:图的保存形式:邻接表,使用一个链表把图的点之间的链接关系保存起来,一般是所有的元素组成一个数组,数组中每个元素是一个节点,节点内保存当前元素和指向相邻元素的指针。邻接矩阵,图中有n个节点,则矩阵E是n*n的,对于无向图,若i和j有链接关系,则E[i][j]=E[j][i]=1若无连接关系则为0;对于有向图,当i到j有边时候,E[i][j]=1,否则为0.图的遍历:深度优先遍历(DFS),即对于一个图,不管是矩阵还是邻接表,优先遍历的是孩纸节点,孩子节点遍历完成之后才遍历兄弟节点。广度优先遍历(BFS),优先遍历兄弟节点。无向图的最小树生成算法:Prim算法,任意选取一个点,然后从这个点拓展,每
阅读全文
posted @
2014-04-01 16:04
晓O(∩_∩)O~
阅读(448)
推荐(0)
常见排序方法
摘要:比较常用的排序方法(升序):冒泡排序:最常用的排序方法。大体思路就是每次选出一个最大值,第二次选出次大值,基本上就是两个for循环。鸡尾酒排序:冒泡排序方法的变种,鸡尾酒排序,待排序数组首先从0->n-1找出最大值,然后n-2->0找出最小值,然后再从1->n-2找次大值……依次类推……一个whil...
阅读全文
posted @
2014-03-06 21:27
晓O(∩_∩)O~
阅读(459)
推荐(0)
求素数大有学问
摘要:最近看了几道历年来找工作的笔试题目,很有几道是和素数相关的,本来也没有怎么上心,就觉得求素数么,不就弄个for循环,判断到当前要判断的数的开方即可,可是linFen的博客让我看的是一愣一愣的,所以在此做个笔记。定理1:如果n不是素数, 则n有满足1=67成立,右边不等式对于x>√e3≈4.48169...成立.则我们可以事先算好小于unsigned long long内的所有的素数即可。假设我们要判断unsigned long long (2^64)以内的素数,我们就需要2^32内的素数即可判断,即有: Max unsigned long (MUL)= 2^32=4294967296 π
阅读全文
posted @
2014-03-05 21:39
晓O(∩_∩)O~
阅读(405)
推荐(0)
杨氏矩阵的一些性质
摘要:在笔试题目中看到一个关于杨氏矩阵(Young Tableau)的问题,说实话,杨氏矩阵我还是第一次听说,就在网上百度谷歌了一番,感觉这个数据结构还蛮有意思的。而且这个数据结构在做增、删、查找的复杂度都比较低。以前只知道学书本上面的问题,现在才知道不能光学课本,还要了解那些能够在实际中有用的东西。首先介绍一下这个数据结构的定义,杨氏矩阵就是有一个m*n的矩阵,让后有一数组 a[k], 其中 k x 且x-u >= x-l 则将x 与 x-u进行交换;x-l > x 且x-l > x-u 则将x 与 x-l进行交换;x >= x-l 且 x > x-u 则x 不动,此
阅读全文
posted @
2014-02-21 21:37
晓O(∩_∩)O~
阅读(543)
推荐(0)
堆排序算法
摘要:堆的概念: 最小值堆:最小值堆是一个关键码序列{K0,K1,…Kn-1},它具有如下特性: Ki≤K2i+1 (i=0,1,…, n/2-1)Ki≤K2i十2 最大值堆:最大值堆是一个关键码序列{K0,K1,…Kn-1},它具有如下特性:Ki≥K2i+1 (i=0,1,…, n/2-1) Ki≥K2i十2 一句话,堆就是具有下列性质的二叉树:树的每个节点的值都大于等于其左右孩子节点的值就是大顶堆;树的每个节点的值都小于等于其左右孩子节点的值就是小顶堆。本文主要是想通过堆来进行排序,我们会提出一个疑问,我现在有一个堆,那么我按照层序遍历遍历这棵树的每个节点,输出的值是不是有序的呢?答案是否定的。
阅读全文
posted @
2014-02-21 20:44
晓O(∩_∩)O~
阅读(406)
推荐(0)
折半查找递归和非递归实现
摘要:折半查找,在此做一总结,递归和非递归实现如下所示: 1 //data增序排列 3 //非递归折半查找 4 int binarySearch(int * data, int keyValue, int len){ 5 int low=0,high=len-1,mid=0; 6 while (lowkeyValue)11 high=mid-1;12 else 13 low=mid+1;14 }15 return -1;16 }17 18 //递归折半查找19 int* binarySearchRecu...
阅读全文
posted @
2014-02-21 10:24
晓O(∩_∩)O~
阅读(852)
推荐(0)
树状数组算法计算数组的元素之和
摘要:最近在研究怎样使算法效率提高的问题,涉及到一个数组的元素求和问题,假设一个数组A[ARRAY_SIZE],求数组里面所有元素的和。我以前所能想到的就是o(n)的算法,遍历数组,使用一个变量sum依次加上数组的元素。但是,假设这个数组的元素经常变化呢?假设我们要求这个数组的前X项的和呢?难道还是要一...
阅读全文
posted @
2013-08-23 19:53
晓O(∩_∩)O~
阅读(335)
推荐(0)