微软面试100题
文章平均质量分 60
miao6664659
这个作者很懒,什么都没留下…
展开
-
阿里巴巴 2013-9-14 答案我自己做的,题目是网上找的。
1. 单选题1. 假设把整数关键码K散列到N个槽列表,以下哪些散列函数是好的散列函数A: h(K)=K/N;B: h(K)=1;C: h(K)=K mod N;D: h(K)=(K+rand(N)) mod N, rand(N)返回0到N-1的整数2. 下面排序算法中,初始数据集的排列顺序对算法的性能无影响的是:A: 堆排序 B:插入排序C: 冒泡排序 D:快速原创 2013-09-15 22:56:30 · 5895 阅读 · 10 评论 -
改进的筛素数法
http://blog.csdn.net/morewindows/article/details/7347459 最简单的筛素数法方法就是从2开始,将所以2的倍数去掉,然后从3开始,将3的倍数去掉。根据这样很容易写出代码,下面代码就是是筛素数法得到100以内的素数并保存到primes[]数组中。//by MoreWindows( http://blog.csdn.net/MoreWind转载 2012-12-29 10:29:59 · 545 阅读 · 0 评论 -
转载的说明
博客中大部分的文章均为转载,转载的内容大概有以下几个牛人:1.July http://blog.csdn.net/v_JULY_v/article/details/61264062.HackBuffer http://blog.csdn.net/Hackbuteer1?viewmode=contents3.morewindows 4. 小田 http://blog.csdn.ne原创 2012-11-22 09:29:08 · 1115 阅读 · 0 评论 -
白话经典算法系列之九 从归并排序到数列的逆序数对(微软笔试题)
http://blog.csdn.net/morewindows/article/details/8029996首先来看看原题微软2010年笔试题在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序数对。一个排列中逆序的总数就称为这个排列的逆序数。如{2,4,3,1}中,2和1,4和3,4和1,3和1是逆序数对,因此整个数组的逆序数对个数转载 2012-12-13 19:39:28 · 751 阅读 · 0 评论 -
寻找迷宫的一条出路 (o:通路,X障碍)
转载自:1.July http://blog.csdn.net/v_JULY_v/article/details/61264066、寻找迷宫的一条出路(o:通路; X障碍) char Maze[MAX_SIZE][MAX_SIZE] = {{'X','X','X','X','X','X','X','X'}, {转载 2012-12-13 11:07:24 · 1461 阅读 · 0 评论 -
KMP算法的应用1
http://blog.csdn.net/hackbuteer1/article/details/7319115给定一个字符串,问最多是多少个相同子串不重叠连接构成。KMP的next数组应用。这里主要是如何判断是否有这样的子串,和子串的个数。若为abababa,显然除其本身外,没有子串满足条件。而分析其next数组,next[7] = 5,next[5] = 3,next[3] = 1转载 2012-12-12 20:51:51 · 826 阅读 · 0 评论 -
程序员面试题精选100题(04)-二元树中和为某一值的所有路径[数据结构]
http://zhedahht.blog.163.com/blog/static/254111742007228357325/题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22和如下二元树 10转载 2012-12-13 10:01:06 · 672 阅读 · 0 评论 -
字符串移位包含问题
转自编程之美 以下是解法:参考代码如下:BOOL FindStr(char str1[],char str2[]){ int len=strlen(str1); char *str3=(char*)malloc(len*2+1); memset(str3,0,len*2+1); int i=0; while(i<2*len) { str3[i++]=str转载 2012-12-12 09:25:57 · 898 阅读 · 0 评论 -
在排序数组中,找出给定数字出现的次数。比如【1,2,2,2,3】中2的出现次数为3次
转自:http://www.cnblogs.com/qlee/archive/2011/09/16/2178873.html拿到这道题:首先应该注意到这个是排序数组,如果再重头到尾遍历,那么就没有用到已经排序的这条性质。下面是我的一段代码:int sum=0;void FindNum(int *num,int begin,int end,int t){ if(begin<转载 2012-12-24 21:33:04 · 1114 阅读 · 0 评论 -
求两个串中第一个最长的子串 神州数码
以下内容转载自http://blog.csdn.net/hackbuteer1/article/details/6686931(题目)和July(解法)求两个串中的第一个最长子串(神州数码以前试题)。如"abractyeyt","dgdsaeactyey"的最大子串为"actyet"。 http://blog.csdn.net/miao6664659/article/details转载 2012-12-11 21:54:41 · 1048 阅读 · 0 评论 -
随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
题目转载自 July答案解法转载自 Hack http://blog.csdn.net/hackbuteer1/article/details/7462447 7、随机分配座位,共50个学生,使学号相邻的同学座位不能相邻(早些时候用C#写的,没有用C改写)。void perm(int *a,int len,int idx,std::vector col){ if(idx==le转载 2012-12-12 14:55:09 · 3526 阅读 · 0 评论 -
对链表进行排序 搜狗2012笔试
http://blog.csdn.net/hackbuteer1/article/details/8016173101、实现一个队链表排序的算法,C/C++可以使用std::list,Java使用LinkedList要求先描述算法,然后再实现,算法效率尽可能高效。主要考察链表的归并排序。要点:需要使用快、慢指针的方法,找到链表的的中间节点,然后进行二路归并排序typede转载 2012-12-11 14:28:18 · 852 阅读 · 0 评论 -
精确表达浮点数 编程之美
以下内容转载自编程之美【问题描述】: 在计算机中,使用float或者double来存储小数是不能得到精确值的。如果你希望得到精确计算结果,最好是用分数形式来表示小数。有限小数或者无限循环小数都可以转化为分数。比如:0.9 = 9/100.333(3)= 1/3(括号中的数字表示是循环节)当然一个小数可以用好几种分数形式来表示。如:0.333(3)= 1/3 =转载 2012-12-11 16:23:38 · 828 阅读 · 0 评论 -
程序员面试题精选100题(63)-数组中三个只出现一次的数字[算法]
http://zhedahht.blog.163.com/blog/static/25411174201283084246412/题目:一个数组中有三个数字a、b、c只出现一次,其他数字都出现了两次。请找出三个只出现一次的数字。分析:在博客http://zhedahht.blog.163.com/blog/static/2541117420071128950682/中我们讨论了如何在一个数转载 2012-12-07 21:24:16 · 1109 阅读 · 0 评论 -
子数组的最大值 微软面试之03
http://zhedahht.blog.163.com/blog/static/254111742007219147591/题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3,转载 2012-12-06 10:04:30 · 514 阅读 · 0 评论 -
面试题 背包问题的具体应用 打印出对应的序号
这是我看到的一个公司的面试题目,出题目的公司不知道是哪一个了。特意转载他的题目 解法是我给的 可能不是最好的A公司供应各种档次的营养套餐,假设菜单上共有n项失误m1,m2,m3..mn,每种食物mi的营养价值为vi,价格为pi。套餐中每种失误之多出现一次,请完成以下两个小题:(1)请为顾客设计算法。求解总价格不超过M的营养价值最大的套餐。(2)具体列出来 食物编号 营养转载 2012-12-05 21:07:51 · 843 阅读 · 0 评论 -
微软面试之 26 左旋右旋字符串
.转载自:July http://blog.csdn.net/v_JULY_v/article/details/612640626.左旋转字符串题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef 左旋转2 位得到字符串cdefab。请实现字符串左旋转的函数。要求时间对长度为n 的字符串操作的复杂度为O(n),辅助内存为O(1)。转载 2012-11-22 10:33:41 · 1079 阅读 · 0 评论 -
微软面试之25 在字符串中找出连续最长的数字串,并把这个串的长度返回,
.转载自:July http://blog.csdn.net/v_JULY_v/article/details/6126406写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr 所指内存。例如:"转载 2012-11-22 09:58:26 · 712 阅读 · 0 评论 -
用两个栈来实现一个队列
http://zhedahht.blog.163.com/blog/static/2541117420073293950662/题目:某队列的声明如下:templatetypename T>class CQueue{public: CQueue() {} ~CQueue() {} void appendTail(const转载 2012-12-17 14:57:22 · 756 阅读 · 0 评论 -
求连通图的割点(网易有道)
转载自JulyJuly http://blog.csdn.net/v_JULY_v/article/details/61264062.求一个有向连通图的割点,割点的定义是,如果除去此节点和与其相关的边,有向图不再连通,描述算法。以下首先贴出来我的代码:将连通图首先序列化为若干条线性队列。然后从后往前查找线性队列的相同的值,这个值就是割点。如果不存在,则不存在割转载 2012-12-17 16:43:11 · 1754 阅读 · 0 评论 -
程序员面试题精选100题(39)-颠倒栈[数据结构]
http://zhedahht.blog.163.com/blog/static/25411174200943182411790/题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。分析:乍一看到这道题目,第一反应是把栈里的所有元素逐一pop出来,放到一个数组里,然后在数组里颠倒所有元素,最后把数组中转载 2012-12-19 19:28:25 · 744 阅读 · 0 评论 -
创新工场笔试题2014年,求概率
小冯和小崔都去参加一个workshop,这个workshop时间为6点到8点,小冯参加一小时,小崔参加半小时,那么他们相遇的概率为多少a:5/6 b: 5/8 c:7/16 d:1/2解法如下:原创 2013-09-17 12:06:21 · 1795 阅读 · 0 评论 -
创新工场三道编程题
题目1:把一串英文句子按单词反序输出。如:"good moring" -> "moring good"。void Reverse(char *str,int len){char* pBegin=str;char* pEnd=pBegin+len-1;while(pBegin{swap(*pBegin++,*pEnd--);}return;}int mai原创 2013-09-16 10:29:47 · 1693 阅读 · 1 评论 -
寻找K大数的各种方法
二分搜索K大数1. 设数组中元素的个数为N,则首先对数组中的元素排序,其时间复杂度为O(NlogN)然后从后往前数K个就行了。其时间复杂度为O(NlogN+K)=O(NlogN)2. 采用选择排序,O(N*K)3. 采用快速排序的思想来处理K大数的问题,随机取出一个数字a,用a将数组分成两部分b1,b2。其中b1的数字都比a大,b2的数字都比a小。若a的index==N原创 2013-09-03 16:05:03 · 1589 阅读 · 0 评论 -
精确表达浮点数
原创 2013-09-03 11:02:15 · 908 阅读 · 0 评论 -
位运算
//位操作//1 二进制逆序 高低位交换void ReverseBinary(){ char a='B'; a=(a>>1&0x55)|(a<<1&0xAA); a=(a>>2&0x33)|(a<<2&0xCC); a=(a>>4&0x0F)|(a<<4&0xF0); cout<<int(a)<<endl;}//缺失数字//缺少一个void LostNumber(int a原创 2013-09-03 10:35:03 · 974 阅读 · 0 评论 -
寻找符合条件的整数
1. 寻找符合条件的整数任意给定一个正整数N,求一个最小的正整数M,是的N*M十进制中仅仅包含了1和0。/若N=6.若N*M=K则有1. 搜索K的最高位,最高位必须是1,此时k=1,k%N=12. 搜索下一位,下一位可以是0也可是1,则有(k*10+0)%N=10%6=4,(k*10+1)%N=53. 在搜索下一位:下一位可以是0也可是1,有 (10*0+0)%N=100原创 2013-09-03 19:11:02 · 1257 阅读 · 0 评论 -
抛筛子问题
转自:转载 2013-09-06 10:59:32 · 942 阅读 · 0 评论 -
中位数 (等长 不等长 DFS求卡特兰)
//寻找数组最小值int Find(int a[],int b[],int len){ if(len==1) { return min(a[0],b[0]); } int mid=(len-1)/2;//偶数取小的 奇数取中间 if(a[mid]==b[mid]) return a[mid]; else if(a[mid]<b[mid]) { Find(a+len-原创 2013-08-30 10:34:19 · 1691 阅读 · 0 评论 -
CSDN两个讨论的问题
概率题:一个篮子里装着20个红球和20个蓝球,每次从中取出2球,如果取出的2球颜色是一样的,那么放回红球,取出蓝球;如果取出的2球的颜色是一样的,则都不放回,将2球都取出;不断重复以上步骤。问题:求最后一次取球恰好只取到一个红球的概率。算法题:给你一个自然数N,求[6,N]之内的所有素数中,两两之和为偶数的那些偶数。(直接枚举的话应该是O(n^3))。我的解法如下,是直接枚举的。转载 2013-08-17 22:35:20 · 990 阅读 · 0 评论 -
二分穷举
将N个数字分成为K份,每份中元素必须相临,且k份大小相差最近。例如N=5 K=2a[]={5,3,1,4,7}; 最优的划分为(5,3,1)和(4,7)//用m把长度为N的数组a划分为K段或者更小(m值偏大),返回true//否则返回false(m值偏小)bool check(int a[],const int k,const int m,int N){ int sum=0;i原创 2013-08-29 21:28:38 · 944 阅读 · 0 评论 -
单链表的归并排序
typedef struct LNode{ int data; struct LNode* next;}LNode,*LinkList;LinkList MergeList(LinkList head1,LinkList head2){ LinkList result; if(head1==NULL) return head2; if(head2==NULL) retur原创 2013-08-27 16:30:58 · 890 阅读 · 0 评论 -
Rebuild BiTree & BFS
#define TREELEN 5struct NODE{ NODE* pLeft; NODE* pRight; char chValue;};void ReBuild(char* pPreOrder,char* pInOrder,int nTreeLen,NODE** pRoot){ if(pPreOrder==NULL||pInOrder==NULL) return;原创 2013-08-27 21:42:46 · 800 阅读 · 0 评论 -
LIS 二分加速版
#define inf 0x7fffffffint binary_search_1(int *ord,int digit,int len){ int left=0;int right=len; while(left<=right) { int mid=left+(right-left)/2; if(ord[mid]==digit) { return mid; }原创 2013-08-22 21:56:59 · 1131 阅读 · 0 评论 -
一个百度的面试题
第一题:某个公司举行一场羽毛球赛,有1001个人参加,现在为了评比出“最厉害的那个人”,进行淘汰赛,请问至少需要进行多少次比赛。int total=0;void test(int n)//N个人{ if(n<=1){ cout<<"不能比赛"<<endl;return;} if(n==2) { total+=1; return; } if(n%2==0) {原创 2013-08-20 20:55:35 · 1145 阅读 · 0 评论 -
两个常见位操作面试题 不用加减乘除运算符计算两数之和及a=b*3
http://blog.csdn.net/morewindows/article/details/8710737《两个常见位操作面试题不用加减乘除运算符计算两数之和及a=b*3》地址:http://blog.csdn.net/morewindows/article/details/8710737转载请标明出处,谢谢。欢迎关注微博:http://weibo.com/MoreWindo转载 2013-03-28 10:52:18 · 819 阅读 · 0 评论 -
腾讯2012年实习生笔试加分题
http://blog.csdn.net/morewindows/article/details/8742666地址:http://blog.csdn.net/morewindows/article/details/8742666转载请标明出处,谢谢。欢迎关注微博:http://weibo.com/MoreWindows 之前参加2012年腾讯实习生笔试时,转载 2013-04-01 14:47:27 · 871 阅读 · 0 评论 -
C++大数模板
http://blog.csdn.net/hackbuteer1/article/details/6595881 分别使用C++中的运算符重载的方法来实现大数之间的数学运算,包括加法、减法、乘法、除法、n次方、取模、大小比较、赋值以及输入流、输出流的重载。。 并且使用这个大数模板,顺利AC了HDOJ上的1134这个题目的Catalan数计数问题。。http://acm.转载 2013-01-07 20:15:41 · 605 阅读 · 0 评论 -
程序员面试之 二分搜索 旋转数组的最小元素
http://zhedahht.blog.163.com/blog/static/25411174200952765120546/题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。分析:这道题最直观的解法并不难。转载 2012-12-05 09:19:35 · 507 阅读 · 0 评论 -
动态规划系列之一 引言 :由一个问题引出的算法
http://iprai.hust.edu.cn/icl2002/algorithm/algorithm/technique/dynamic_programming/introduction.htm引言——由一个问题引出的算法考虑以下问题[例1] 最短路径问题现有一张地图,各结点代表城市,两结点间连线代表道路,线上数字表示城市间的距离。如图1所示,试找出从结点A到结点E的最短距离。转载 2012-12-04 14:52:49 · 728 阅读 · 0 评论