
算法
文章平均质量分 54
kyowill
这个作者很懒,什么都没留下…
展开
-
字符串左移
比如ABCDEFG,移3位变DEFGABC,要求空间复杂度O(1),时间复杂度O(n)。void*pszStringRotate(char*pszString, intnCharsRotate)翻手算法:设置有个函数为倒序排列:void Rorder(char *pF,char *pE);12345原创 2015-09-08 20:41:40 · 563 阅读 · 0 评论 -
计算两点间的距离
Problem Description输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。Input输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。Output对于每组输入数据,输出一行,结果保留两位小数。Sample Input0 0 0 10 1 1 0Sample Output1.00转载 2015-09-16 22:18:27 · 543 阅读 · 0 评论 -
海选女主角
potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业余时间挣点外快以养家糊口。“做什么比较挣钱呢?筛沙子没力气,看大门又不够帅...”potato老师很是无奈。“张艺谋比你还难看,现在多有钱呀,听说还要导演奥运开幕式呢!你为什么不去娱乐圈发展呢?”lwg在一旁出主意。嗯,也是,为了生存,就委屈点到娱乐圈混混吧,马上就拍一部激光电影《杭电记忆——回来我的爱》。说干就干,转载 2015-09-16 22:14:42 · 288 阅读 · 0 评论 -
Big Number
Problem DescriptionIn many applications very large integers numbers are required. Some of these applications are using keys for secure transmission of data, encryption, etc. In this problem you ar转载 2015-09-16 22:46:33 · 332 阅读 · 0 评论 -
满足条件的周长最短的三条边
1.已知一个数组,从数组中取三个数a , b , c满足 a b c可以构成一个三角形,找出 a + b + c最大的三个数,要求时间复杂度为O(nlgn)算法思路:(1)先将数组排序(nlgn)(2)从数组最后一个元素开始,向前遍历,如果 a + b > c, 则即为所求,(3)否则 以倒数第二个元素为最大边( 注a b不再向前滑动,因为 前面的元素更不可能满足构成三角形条件),原创 2015-10-21 23:15:28 · 598 阅读 · 0 评论 -
给定一个无序数组,请调整该数组,调整成奇数放在数组的左边,偶数放在数组的右边。但是奇数与奇数之间的相对顺序不变,偶数和偶数之间的相对顺序也不变。
给定一个无序数组,请调整该数组,调整成奇数放在数组的左边,偶数放在数组的右边。但是奇数与奇数之间的相对顺序不变,偶数和偶数之间的相对顺序也不变。要求思考:如果额外空间复杂度必须为O(1),时间复杂度可以做到什么程度呢?这个题,要保证额外空间复杂度为o(1)的情况下,时间复杂度只能做到o(n^2) ,利用快排思想并不能保证稳定性,利用归并思想做不到常量空间原创 2015-10-23 13:50:50 · 1217 阅读 · 0 评论 -
蓄水池抽样——《编程珠玑》读书笔记
问题:如何随机从n个对象中选择一个对象,这n个对象是按序排列的,但是在此之前你是不知道n的值的。 思路:如果我们知道n的值,那么问题就可以简单的用一个大随机数rand()%n得到一个确切的随机位置,那么该位置的对象就是所求的对象,选中的概率是1/n。 但现在我们并不知道n的值,这个问题便抽象为蓄水池抽样问题,即从一个包含n个对象的列表S中随机选取k个对象转载 2015-09-19 09:23:31 · 272 阅读 · 0 评论 -
最大差值
有一个长为n的数组A,求满足0≤a≤b给定数组A及它的大小n,请返回最大差值。测试样例[10,5],2返回:0class LongestDistance {public:int getDis(vector A, int n){ // write code here int len = n; int max = A[0]; int原创 2015-09-24 20:53:29 · 471 阅读 · 0 评论 -
二叉树中的数学性质
1.总结点数 = 总分支数 + 1;2.树的节点数 = 节点的度数 + 1;3.叶节点数 = 度为2的节点数 + 1;原创 2015-08-23 13:08:00 · 967 阅读 · 0 评论 -
给一个数轴,包括正无穷和负无穷,从原点0开始向目标位置x走动(x为整数),第i步,步长为i,求到x的最少步数
给一个数轴,包括正无穷和负无穷,从原点0开始向目标位置x走动(x为整数),第i步,步长为i(可以正向,也可以负向),如 从0 开始,目标地址为3,中途经过(0 ,1),(1 , 3).如果目标地址是2 中途经过(0, 1)(1, -1)(-1, 2),问从0到x的最短路径原创 2015-10-28 21:12:57 · 1719 阅读 · 0 评论 -
360笔试--行编辑器
#include #include #include #include #include #include #include #include #include using namespace std;string help(string& s){ string tmp = ""; for(int i = 0; i < s.size(); ++i) { if(s原创 2015-09-29 18:49:50 · 478 阅读 · 0 评论 -
网易游戏2016在线笔试
#include #include #include #include #include #include #include using namespace std;int countLevel(const string & s){ int count = 0; for(int i = 0; i < s.size(); ++i) {原创 2015-09-13 17:45:14 · 1019 阅读 · 0 评论 -
01排序
给定一个01串(仅由‘ 0’或‘1’组成的字符串),现在想把这个数字串排序成“非递减”有序序列,请问至少需要多少次交换(任意两个位置交换)? 输入描述:输入数据第一行是一个正整数T(T<=100),表示有T组测试数据;接下来的T行,每行给出01串。数据保证——50%的字符串长度在[1,100 ]95%的字符串长度在[1,10000]100%的字符串长度在[1,1000000]原创 2015-09-08 12:15:24 · 739 阅读 · 0 评论 -
生成数组的随机排列
1. 假设有一个数组,里面有10个元素 inta[10]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9}。请写一个算法,得到a数组的一个随机排列。要求时间复杂度尽量小,可以使用random函数。例如输出的随机序列可以是:3 6 2 4 5 1 9 8 0(一个常用的方法就是为数组的每一个元素A[i]赋一个key,用来表示它的优先级,即P[i],并且[i]是随机的,然后根据这个优先原创 2015-09-10 16:16:30 · 2301 阅读 · 0 评论 -
给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。
#include #include using namespace std;int rand5(){ return (rand()%5+1);}void main(){ int a; while((a=rand5()*5+rand5())>26); cout<< (a-3)/3<<endl;}代码解释:1. 通过 rand5()*5+rand5() 产生转载 2015-09-05 23:09:51 · 832 阅读 · 0 评论 -
求数组最长的和为0的连续子数组
#include #include #include #include #include #include #include #include #include using namespace std;void help(vector& vec, char* buf){ for(int i = 0; i < strlen(buf);) {原创 2015-09-26 00:43:33 · 1557 阅读 · 0 评论 -
十道海量数据处理面试题与十个方法大总结
第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率转载 2015-09-05 00:44:28 · 1945 阅读 · 0 评论 -
求矩阵中2×2子矩阵和的最大值
#include #include #include #include #include #include #include #include using namespace std;void help(char* buf, vector >& vvec){ vector vec; for(int i = 0; i < strlen(buf); ++i)原创 2015-09-26 00:48:10 · 936 阅读 · 0 评论 -
memcpy函数实现及其优化
实现1:《高质量c++,c编程指南》[cpp] view plaincopyvoid *mymemcpy(void *dst,const void *src,size_t num) { assert((dst!=NULL)&&(src!=NULL)); //assert(des>=src+num|转载 2015-09-12 15:56:43 · 987 阅读 · 0 评论 -
找出平面上距离最近的两个点
#include #include #include #include #include #include #include #include using namespace std; struct point { point(double x, double y) { x_ = x; y_ = y; } double x_; double原创 2015-09-27 10:12:00 · 2405 阅读 · 0 评论 -
360笔试--找老乡
#include #include #include #include #include #include #include #include #include using namespace std;struct relation{ relation(int x, int y) { x_ = x; y_ = y; }原创 2015-09-29 18:54:28 · 775 阅读 · 0 评论 -
一个数组a[0...n-1],求a[j]-a[i]的最大值,其中i<j
其中数组a[n]是无序的,求a[j]-a[i]的最大值,且i第一种方法:从左往右求下标0到 k - 1 的最小值MIN从右往左求 下标k到n -1 的最大值MAX对于每个k都有一个MAX - MIN的值,最后求这个值的最大值即可。例如数组:4 5 2 6 3 1K:1 2 3 4 5MIN: 4 4 2 2 2MAX:6 6 6 3 1MAX - MIN,最原创 2015-10-29 19:32:42 · 2913 阅读 · 0 评论