![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
微软面试100题
蓝翳-裂缝中的阳光
First you do it then something change it.
展开
-
面试题---单词翻转
对于这道题,首先要将整个字符串按照字母整个进行翻转,然后再单词内进行翻转,重点在与分割出单词来,设两个标志first和last分别表示单词的开始和结束位置,连续空格的第一个或单一的一个空格前一个位置是前一个单词的结尾,连续空格的最后一个空格的下一个位置是下一个单词的开始。代码如下:#include#includeusing namespace std;class WordsReve原创 2013-04-02 18:54:29 · 515 阅读 · 0 评论 -
从1到n的正数中1出现的次数
题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次。利用动态规划的思想,每次往前进行增加。代码如下:#includeusing namespace std;int Countdatanum(int n){ int Data[10] = {0}; int i =原创 2013-04-17 22:17:01 · 478 阅读 · 0 评论 -
判断出栈序列是否正确
题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序思路如下:pop的数字正好是栈顶数字,直接pop出栈即可;如果希望pop的数字目前不在栈顶,我们就到push序列中还没有被push到栈里的数字中去搜索这个数字,并把在它之前的所有数字都push进栈。如果所有的数字都被push进栈仍然没有找到这个数字,表明该序列不可能是一个po原创 2013-04-17 16:54:51 · 1206 阅读 · 0 评论 -
十道海量数据处理面试题与十个方法大总结
第一部分、十道海量数据处理面试题 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。 再详细介绍下此方案:首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多原创 2013-04-16 09:42:46 · 526 阅读 · 0 评论 -
斐波纳契数列
斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1960年代起出版了《斐波纳契数列》季刊,专门刊载这方面的研究成果。拓展:一个台阶总共有n级原创 2013-04-11 18:33:43 · 806 阅读 · 0 评论 -
求Zigzag数组
面试题:输入N,求一个N*N矩阵,规定矩阵沿45度线递增,形成一个zigzag数组。#include#include#includeusing namespace std;void CreateZigzag(int *zigzag,int **data,int n) //data数组是N*N的数组,其中数据需要以Zigzag存入数组,所以zigzag的数组长度为N*N{ //i原创 2013-04-08 16:43:06 · 572 阅读 · 0 评论 -
面试题---求数据之和算法二
上一篇是几乎用的别人的方法,我想了下,那样的排版太难看了,而且他是从n开始往前开始动态规划,所以我就想从前开始往后开始动态规划求出sum的组合元素,这样得出的结果更有层次,思想差不多,废话不多说,直接上代码:#include#includeusing namespace std;list factorlist;void FindFactorDP(int n,int sum,原创 2013-04-06 14:52:31 · 450 阅读 · 0 评论 -
面试题---求数据之和
编程求解:输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.#include#includeusing namespace std;list factorlist;void FindFactor(int n,int sum,int result){ if(sum <= 0 || n <=原创 2013-04-06 14:34:08 · 462 阅读 · 0 评论 -
面试题---求最后的数
题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。代码如下:#includeusing namespace std;#define MIN -1int LastRemain原创 2013-04-03 07:59:20 · 389 阅读 · 0 评论 -
面试题---求树的高度
没什么好的想法,只是递归,强行搞定。代码如下:#include#includeusing namespace std;typedef struct BinaryTree{ int data; BinaryTree *left; BinaryTree *right;}*PointerTree;void InsertBinaryTree(BinaryTree *root,原创 2013-04-02 18:57:06 · 529 阅读 · 0 评论 -
面试题---给定数组求出现的次数
给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数。 上排的十个数如下: 【0,1,2,3,4,5,6,7,8,9】初看此题,貌似很难,10分钟过去了,可能有的人,题目都还没看懂。 举一个例子, 数值: 0,1,2,3,4,5,6,7,8,9 分配: 6,2,1,0,0,0,1,0,0,0原创 2013-04-02 18:46:56 · 620 阅读 · 0 评论 -
面试题---两数之和
题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。 如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。代码如下:#includeusing namespace std;/*s原创 2013-04-02 19:00:02 · 484 阅读 · 0 评论 -
面试题---判断整数序列是不是二元查找树的后序遍历结果
判断整数序列是不是二元查找树的后序遍历结果题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / / 6 10/ / / /5 7 9 11因此返回true。如果输入7、4、6、5,没有哪棵树的后序遍历原创 2013-04-02 18:49:39 · 558 阅读 · 0 评论 -
面试题---设计包含min函数的栈
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。结合链表一起做。首先我做插入以下数字:10,7,3,3,8,5,2, 60: 10 -> NULL (MIN=10, POS=0)1: 7 -> [0] (MIN=7, POS=1) 用数组表示堆栈,第0个元素表示栈底2: 3 -> [1] (原创 2013-04-02 18:44:37 · 705 阅读 · 0 评论 -
圆圈中最后剩下的数字----Joseph环
题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。分析:我们完全可以用计算机来模拟上述过程,每找到一个要删除的数,需要扫描m次,总共删除n-1个数,所以总得扫描次数为m*(n-1)。这是一个平方级的原创 2013-06-03 14:12:18 · 799 阅读 · 0 评论