Algorithm
文章平均质量分 66
Follow_My_Heart
菜鸟喜欢贴代码,高手喜欢总结高论
展开
-
循环移位
题目要求:将字符串str进行循环移位,要求算法空间复杂度O(1),时间复杂度O(n)思路:假设str需要循环移位k位,则将其分为前后两部分,分别长k和n-k,称AB则循环移位的过程即为XY->YX. 可由XT即转置完成,(XTYT)T=(YT)T(XT)T=YX实现如下:/* * Reverse_String.cpp * * Created on: May转载 2014-03-07 23:25:34 · 913 阅读 · 0 评论 -
一道腾讯面试题:根据上排给出十个数,在其下排填出对应的十个数
给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数。 上排的十个数如下: 【0,1,2,3,4,5,6,7,8,9】举一个例子, 数值: 0,1,2,3,4,5,6,7,8,9 分配: 6,2,1,0,0,0,1,0,0,0 0在下排出现了6次,1在下排出现了2次,转载 2014-08-17 10:24:52 · 755 阅读 · 0 评论 -
转载大数据排序 很好的思想
http://www.cnblogs.com/songsu/articles/1457666.html算法的力量:位运算在排序与搜索中的应用楔子: 问题:假设一个文件中有9亿条不重复的9位整数,现在要求对这个文件进行排序。一般解题思路: 1、将数据导入到内存中 2、将数据进行排序 (比如插入排序、快速排序) 3、将排序好的数据存入文件难题: 一个整数为4个字节即使使转载 2014-08-25 15:43:32 · 908 阅读 · 0 评论 -
1亿个数据取前1万大的整数
数据规模分析 不考虑操作系统的区别,通常将C++中的一个整型变量认为4bytes。那么1亿整型需要400M左右的内存空间。当然,就现代PC机而言,连续开辟400M的内存空间还是可行的。因此,下面的讨论只考虑在内存中的情况。为了讨论方便,假设M=1亿,N=1万。 用大拇指想想略微考虑一下,使用选择排序。循环1万次,每次选择最大的元素。源代码如下://解决转载 2014-08-25 11:09:54 · 1269 阅读 · 0 评论 -
桶排序
从《基于比较的排序结构总结 》中我们知道:全依赖“比较”操作的排序算法时间复杂度的一个下界O(N*logN)。但确实存在更快的算法。这些算法并不是不用“比较”操作,也不是想办法将比较操作的次数减少到 logN。而是利用对待排数据的某些限定性假设 ,来避免绝大多数的“比较”操作。桶排序就是这样的原理。 桶排序的基本思想 假设有一组长度为N的待排关键字序列K[1...转载 2014-08-25 09:17:09 · 697 阅读 · 0 评论 -
数组奇偶移位
/*奇数在前,偶数在后*/#include #include using namespace std;int main(){ int a[10] = {0, 5, 12, 8, 5, 19, 24, 3, 7, 34}; int *p = a; int *q = a+sizeof(a)/sizeof(int)-1; int temp; while(p < q)原创 2014-04-04 15:39:35 · 960 阅读 · 0 评论 -
用两个栈实现一个队列
用两个栈实现一个队列:算法示意图如下#include using namespace std;const int StackSize = 100; //栈容量templateclass SeqStack{public: SeqStack(){ top = -1;} ~SeqStack(){} void Push(T x);原创 2014-04-03 20:38:04 · 878 阅读 · 0 评论 -
KMP模式匹配算法中next[]数组求法
模式T = ″t1 t2 ⋯ tm″中的每一个字符tj 都对应一个k 值, 这个k 值仅依赖于模式本身字符序列的构成, 而与主串无关。用next [ j]表示tj 对应的k 值( 1≤ j≤ m) , 则t1 ⋯ tk - 1 既是t1 ⋯ tj - 1 的真前缀又是t1 ⋯ tj - 1 的真后缀的最长子串, 因此, 将k = next [ j] 称为tj 的前缀函数值翻译 2014-03-23 15:33:24 · 2461 阅读 · 1 评论 -
KMP模式匹配算法详解(耐心看完定会理解)
KMP模式匹配算法 KMP 字符串模式匹配详解 KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。一 . 简单匹配算法先来看一个简单匹配算法的函数:int Index_BF ( char S [ ], ch转载 2014-03-23 15:21:14 · 1146 阅读 · 0 评论 -
阿里巴巴2011笔试题
1、有一个虚拟存储系统,若进程在内存中占3页(开始时内存为空),若采用先进先出(FIFO)页面淘汰算法,当执行如下访问页号序列后1,2,3,4,5,1,2,5,1,2,3,4,5,会发生多少缺页?A、7 B、8 C、9 D、10转载 2014-03-23 21:31:03 · 844 阅读 · 0 评论 -
判断是否是轴对称二叉树
算法思路:其实思路不难,递归判断左节点的左孩子是否等于右节点的右孩子,并且左节点的右孩子等于右节点的左孩子#include using namespace std;struct BinNode { char data; BinNode *lchild; BinNode *rchild;};void Create(BinNode*原创 2014-04-03 10:26:47 · 935 阅读 · 0 评论 -
字符串移位包含的问题
字符串移位包含的问题(编程之美 p221-223) 问题:给定两个字符串s1和s2,要求判断s2是否能够被通过s1做循环移位(rotate)得到的字符串包含。例如,S1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false。 解法一:从题目中可以看出,我们可以使用最直接的方法对S转载 2014-03-23 10:27:51 · 1278 阅读 · 0 评论 -
如何判断一个数为无符号数还是有符号数
(1)主要利用了无符号数和有符号数相减结果为无符号数的性质。转载 2014-08-17 20:35:46 · 1587 阅读 · 0 评论