E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
面试100题
字符串中找出最长的数字串 【微软
面试100题
第二十五题】
题目要求: 写一个函数,它的原型是int ContinueMax(char *outputStr,char *inputStr); 功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串赋给其中一个函数参数outputStr所指内存。 例如:"abcd12345ed125ss123456789"的首地址传给inputStr后,函数将返回
·
2015-10-31 08:50
字符串
合并链表 【微软
面试100题
第二十四题】
题目要求: 合并链表。已知链表h1和链表h2都是递增链表,要求合并后也是递增链表。 参考链接:http://blog.csdn.net/v_july_v/article/details/6870251 原链接代码while(h1 != NULL && h2 != NULL)应该修改为while(h1 != NULL || h2 != NULL) 代码实现:
·
2015-10-31 08:50
面试
斐波拉契数列 【微软
面试100题
第十九题】
题目要求: 写一个函数,输入n,求斐波拉契数列的第n项。斐波拉契数列的定义如下: 参考资料:剑指offer第9题、编程之美2.9 题目分析: 方法1:递归法,效率很低,而且会计算很多重复; 方法2:迭代法,通过保存中间项避免重复计算,时间复杂度O(n); 方法3:公式法,时间复杂度O(1),因为公式中引入了无理数,所以不能保证结果的精度; 方法4:分治
·
2015-10-31 08:50
面试
字符串转换成整数 【微软
面试100题
第二十题】
题目要求: 输入一个表示整数的字符串,把该字符串转换成整数并输出。 例如:输入字符串"235",输出整数235. 参考资料:剑指offer第49题、程序员编程艺术 (by July) 题目分析: 1.基本思路: int StrToInt(char *str) { int num = 0; while(*str != '\
·
2015-10-31 08:50
字符串
判断两个链表是否相交 【微软
面试100题
第七题】
题目要求: 给出两个单向链表的头指针,比如h1和h2,判断两个链表是否相交。 题目分析: 1.边界检查:是否为NULL 2.是否有环: i).h1和h2都没有环,则如果h1和h2的最后一个结点时同一个结点,则相交; ii).一个有环,一个无环,则肯定不相交; iii).都有环,则如果h1的环中的一个结点走一圈可以达到h2环中的一个结点,则相交;
·
2015-10-31 08:49
面试
根据上排数填下排数 【微软
面试100题
第六题】
题目要求: 根据上排给出的十个数,在其下排填出对应的十个数。 要求下排每个数都是先前上排那十个数在下排出现的次数。 例如:上排:0,1,2,3,4,5,6,7,8,9 下排:6,2,1,0,0,0,1,0,0,0 0在下排出现了6次,1在下排出现了2次,2在下排出现了1次,3在下排出现了0次...以此类推 题目分析: 先初始化下排的十个数都为
·
2015-10-31 08:49
面试
查找最小的k个元素 【微软
面试100题
第五题】
题目要求: 输入n个整数,输出其中最小的k个。 例如:输入1,2,3,4,5,6,7,8这8个数字,则最小的4个数字为1,2,3,4。 参考资料:剑指offer第30题。 题目分析: 解法一: 用快排的思想,但是最小的k个数不用排序,时间复杂度O(n). 优点:时间复杂度好,缺点:会修改原整数数组顺序。 解法二: 创建一个大小为k的最大堆,
·
2015-10-31 08:49
面试
在二元树中找出何为某一值的所有路径 【微软
面试100题
第四题】
题目要求: 输入一个整数和一颗二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径。 例如输入22,和二叉树如下 10 / \ 5 12 / \ 4 &
·
2015-10-31 08:49
面试
二叉搜索树的后序遍历序列 【微软
面试100题
第九题】
题目要求: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。 例如输入数组{5,7,6,9,11,10,8},则返回true,因为这个证书序列时某一二叉搜索树的后序遍历结果。如果输入的数组是{7,4,6,5},由于没有哪棵二叉搜索树的后序遍历的结果是这个序列,因此返回false。
·
2015-10-31 08:49
面试
翻转句子中单词的顺序 【微软
面试100题
第十题】
题目要求: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。 例如:输入"I am a student.",则输出"student. a am I". 参考资料:剑指offer第42题。 题目分析: 1.实现一个翻转函数; 2.先翻转整个句子,再翻
·
2015-10-31 08:49
面试
第八题各小题汇总 【微软
面试100题
第八题】
题目1: 有两个房间,一房间里有三盏灯,另一房间里有控制着这三盏灯的三个开关,这两个房间是分割开的,从一间里不能看到另一件的情况。现在要求受训者分别进这两间房一次,然后判断出这三盏灯分别是由哪个开关控制的。 分析:通过温度来解决。 题目2: 你让一些人为你工作了七天,你要用一根金条作为报酬。金条被分成七小块,每天给出一块。如果你能将金条切割两次,你怎样分给这些工人? 分析
·
2015-10-31 08:49
面试
+n 【微软
面试100题
第十二题】
题目要求: 要求不能使用乘除法,for/while/if/else/switch/case等关键字以及条件判断语句(A?B:C)。 参考资料:剑指offer第46题 题目分析: 方法1:利用类的静态成员变量,定义一次之后该类的所有对象都共享该静态成员变量。再利用构造函数实现n次递加即可; 方法2:利用函数指针; 方法3:利用虚函数和动态联编(虚函数和动态联编介绍:h
·
2015-10-31 08:49
面试
链表中倒数第k个结点 【微软
面试100题
第十三题】
题目要求: 输入一个链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。 参考资料:剑指offer第15题 题目分析: 1.两个指针,第一个先走k步,然后两个指针同时走,直到第一个走到尾指针,此时第二个指针即为所求; 2.令函数原型为:ListNode *findKthToTail(ListNode *head,unsigned int k);
·
2015-10-31 08:49
面试
求二叉树中结点的最大距离 【微软
面试100题
第十一题】
题目要求: 如果我们把二叉树看成一个图,父子结点之间的连线看成是双向的,我们姑且定义“距离”为两节点之间边的个数。写一个程序,求一颗二叉树中距离最远的两个结点之间的距离。 参考资料:编程之美3.8 题目分析: 最远距离要么经过根结点,要么不经过根结点在左子树中,要么不经过根结点在右子树中。根据这个思路加上递归就可以实现代码。 代码实现: #inclu
·
2015-10-31 08:49
二叉树
二叉搜索树与双向链表 【微软
面试100题
第一题】
题目要求:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 参考题目:剑指offer第27题 解决思路: 1. 根据观察可知,双向链表顺序即为二叉树的中序遍历结果----->采用中序遍历+递归; 2. 中序遍历顺序为:左+中+右,传入一个变量pre。 pre可以这样理解:当前结点的pre就是当前结
·
2015-10-31 08:48
双向链表
求子数组的最大和 【微软
面试100题
第三题】
题目要求: 输入一个整型数组,数组里有整数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有个一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如:输入的数组为1,-2,3,10,-4,7,2,-5,和最大的子数组为3,10,-4,7,2,因此输出为该子数组的和18。 参考资料:剑指offer第31题、编程之美2.14. 题目分析: 依次
·
2015-10-31 08:48
面试
微软
面试100题
2010年版全部答案集锦(含下载地址)
微软等数据结构+算法
面试100题
全部答案集锦 作者:July、阿财。时间:二零一一年十月十三日。
·
2015-10-31 08:03
面试
三、动态规划算法解最长公共子序列LCS问题(2011.12.13重写)
动态规划算法解LCS问题 作者 July 二零一零年十二月三十一日 本文参考:微软
面试
·
2015-10-31 08:01
动态规划
微软公司等数据结构+算法
面试100题
(第1-100题)全部出炉
微软等公司数据结构+算法
面试100题
(第1-100题)首次完整亮相 &
·
2015-10-31 08:01
数据结构
微软等数据结构+算法
面试100题
全部答案集锦
1.把二元查找树转变成排序的双向链表。 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 首先我们定义的二元查找树节点的数据结构如下: struct BSTreeNode { int m_nV
·
2015-10-30 16:39
数据结构
找出链表的第一个公共结点 【微软
面试100题
第六十二题】
题目要求: 两个无环单向链表,找出它们的第一个公共结点。 参考资料:剑指offer第37题。 题目分析: 代码实现: #include <iostream> using namespace std; typedef struct ListNode { struct ListNode *next; int data;
·
2015-10-30 16:23
面试
永久优化:微软技术
面试100题
第1-10题答案修正与优化
永久优化:微软技术
面试
·
2015-10-30 15:12
面试
永久优化:微软技术
面试100题
第11-20题答案修正与优化
永久优化:微软技术
面试
·
2015-10-30 15:11
面试
微软面试、经典算法、编程艺术、红黑树4大系列总结
无私分享,造福天下以下是本blog内的微软
面试100题
系列,经典算法研究系列,程序员编程艺术系列,红黑树系列4大经典原创系列作品与一些重要文章的集锦。
·
2015-10-30 13:34
红黑树
永久勘误:微软等
面试100题
系列,答案V0.4版[第41-60题答案]
:微软面试100系列答案V0.4版[第41-60题答案] 作者:July、何海涛等网友 ---------------------------几点声明: I、 此微软
面试
·
2015-10-27 15:44
面试
几篇总点击率过10万的帖子,以及最近的几点思考
一、算法面试:精选微软经典的算法
面试100题
[每周更新]http://topic.csdn.net/u/20101011/16/2befbfd9-f3e4-41c5-bb31-814e9615832e.html
·
2015-10-27 15:42
思考
永久勘误:微软等
面试100题
答案V0.2版[第1-20题答案]
微软等
面试100题
答案V0.2版部分答案精选
·
2015-10-27 15:40
面试
[最新答案V0.4版]微软等数据结构+算法
面试100题
[第41-60题答案]
[最新答案V0.4版]微软等数据结构+算法
面试100题
[第41-60题答案] 作者 July、Csdn网友 二零一一年一月四日 ------------------
·
2015-10-27 15:39
数据结构
永久勘误:微软等
面试100题
答案V0.3版[第21-40题答案]
微软等
面试100题
答案V0.3版第21-40题部分答案精选 作者:July 、何海涛等网友 -------------------------------------
·
2015-10-27 15:39
面试
不能被继承的类 【微软
面试100题
第五十九题】
题目要求: 用C++设计一个不能被继承的类。 参考资料:剑指offer第48题。 题目分析: 方法1:把构造函数设为私有函数,定义共有的静态函数来创建和释放类的实例; 方法2:利用虚拟继承和友元; 代码实现: //把构造函数设为私有函数,定义共有的静态函数来创建和释放类的实例 class Temp { public: static Temp
·
2015-10-27 14:43
面试
从尾到头输出链表 【微软
面试100题
第五十八题】
题目要求: 输入一个链表的头结点,从尾到头反过来输出每个结点的值。 参考资料:剑指offer第5题。 题目分析: 可以用栈或者递归。 栈把链表结点从头到尾依次存储,这样最终栈顶就是链表尾部。 递归,对于当前结点,可以用递归输出当前结点之后的结点,再输出当前结点。 代码实现: #include <iostream> #include <
·
2015-10-27 14:43
面试
C++异常安全的赋值运算符重载 【微软
面试100题
第五十五题】
题目要求: 类CMyString的声明如下: class CMyString { public: CMyString(char *pData=NULL); CMyString(const CMyString &str); ~CMyString(void); CMyString &operator=(const CMyString
·
2015-10-27 14:42
C++
调整数组顺序使奇数位于偶数前面 【微软
面试100题
第五十四题】
题目要求: 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 要求时间复杂度为O(n). 参考资料:剑指offer第14题。 题目分析: 使用两个指针,pBegin和pEnd,pBegin从开头往后遍历,pEnd从结尾往前遍历,当pBegin遇到偶数和pEnd遇到奇数时,交换两个数,然后继续遍历,直到pBegin>
·
2015-10-27 14:42
面试
最长公共子序列 【微软
面试100题
第五十六题】
题目要求: 如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串中,则字符串一称为字符串二的子串。 注意,并不是要求子串(字符串一)的字符必须连续出现在字符串二中。 请编写一个函数,输入两个字符串,求它们的最长公共子序列,并打印出最长公共序列。 例如:输入两个字符串BDCABA和ABCBDAB,字符串BCBA、BDAB和BCAB都是它们的最长公共子序列,则输出它们
·
2015-10-27 14:41
面试
二元树的深度 【微软
面试100题
第五十二题】
题目要求: 输入一颗二叉树的根结点,求该树的深度。 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 如 3 / \ 4 \ 2,深度为3 参考链接:剑指offer第39题。 题目分析: 用递归的方式从根结点开始,遍历其左右结点,较
·
2015-10-27 14:41
面试
字符串的排列 【微软
面试100题
第五十三题】
题目要求: 输入一个字符串,打印出该字符串中字符的所有排列。 例如输入字符串abc,则输出字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab、cba。 参考资料:剑指offer第28题。 题目分析: 1. 输出的字符串必须包含原字符串的所有字符,只是字符顺序换了; 2. 考虑有字符重复的情况; 3. 思路是: 1) 分别把第
·
2015-10-27 14:41
字符串
最长递减子序列 【微软
面试100题
第四十七题】
题目要求: 求一个数组的最长递减子序列; 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}。 代码实现: 代码1:动态规划,时间复杂度O(N^2). #include <iostream> using namespace std; const int N = 8; int Lis(int a[],int n); int ma
·
2015-10-27 14:40
面试
和为n连续正数序列 【微软
面试100题
第五十一题】
题目要求: 输入一个正数n,输出所有和为n连续正数序列(至少两个)。 例如输入15,由于1+2+3+4+5 = 4+5+6 = 7+8 = 15.所以输出3个连续序列1~5,4~6,7~8. 参考资料:剑指offer第41题。 题目分析: 由题意可知:从1~n中找连续的整数序列。 可以用两个变量small和big表示一个区间small~big,再用一个变量sum表示
·
2015-10-27 14:40
面试
矩阵运算 【微软
面试100题
第四十五题】
题目要求: 对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一,现给出以正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到。 题目分析: 使用贪心算法。 代码实现: #include <iostream> using namespace std; const int N = 3; bool M
·
2015-10-27 14:39
面试
括号问题 【微软
面试100题
第四十六题】
题目要求: 四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(()) 题目分析: 之前左括号的数量必须比右括号多,即卡特兰数, 令h(0)=1,h(1)=1,catalan数满足递推式, h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2), 例如:h(2)=h(0)*h(1)+h
·
2015-10-27 14:39
面试
二叉搜索树的非递归前中后序遍历 【微软
面试100题
第四十三题】
题目要求: 实现二叉搜索树的前序、中序、后序非递归遍历。 题目分析: 非递归前序遍历:使用一个辅助栈,出栈一个结点并输出该结点,同时依次入栈该结点的右结点和左结点,再出栈,入栈...; 非递归中序遍历:使用一个辅助栈和一个临时结点,临时结点不断找树的左子树,知道为空,然后又跳到空结点父结点的右子树,又继续找右子树的左子树; 非递归后序遍历:使用两个辅助栈。 代码实现:
·
2015-10-27 14:39
非递归
珠子问题 【微软
面试100题
第四十题】
题目要求: 一串首尾相连的珠子(m个),有N种颜色(N<=10),设计一个算法,取出其中一段,要求包含所有N种颜色,并使长度最短。并分析时间复杂度与空间复杂度。 题目分析: 本题即为【最短摘要生成,见编程之美3.5】相关问题,见代码1. 因为本题为珠子首尾相连,和最短摘要有些许区别,可以参考代码1,只需要把退出while的条件改为pBegin又回到起点即可。 其中
·
2015-10-27 14:38
面试
合并链表 【微软
面试100题
第四十二题】
题目要求: 两个非降序链表的并集,1->2->3和2->3->5合并为1->2->3->5. 另外只能输出结果,不能修改两个链表的数据。 题目分析: 1.不能修改原链表数据:即,输出1->2->3->5后,原来的两个链表还是1->2->3和2->3->5。因此输出的这些结点都需要重新申请空间存放
·
2015-10-27 14:38
面试
求一个矩阵中最大的二维矩阵 【微软
面试100题
第三十五题】
题目要求: 求一个矩阵中最大的二维矩阵(元素和最大).如: 1 2 0 3 4 2 3 4 5 1 1 1 5 3 0 中最大的是4 5 5 3. 要求:1)写出算法;2)分析时间
·
2015-10-27 14:37
面试
第三十八题汇总 【微软
面试100题
第三十八题】
第一题: 用天平(只能比较,不能称重)从一堆小球中找出其中唯一一个较轻的,用x次天平,最多可以从y个小球中找出较轻的那个,求y与x的关系式。 分析: y = 3^x. 例如:Y= 9. 先分成3堆abc,每堆3个小球; 第一次称找出在abc中哪一堆:称a和b,如果天平不倾斜,则a和b一样重,较轻的一个球肯定在c堆中,否则就在ab中较轻的一堆中;
·
2015-10-27 14:37
面试
字符串联接 【微软
面试100题
第三十七题】
题目要求: 有n个长为m+1的字符串,如果某个字符串的最后m个字符与某个字符串的前m个字符匹配,则两个字符串可以联接。 问这n个字符串最多可以连成一个多长的字符串,如果出现死循环,则返回错误。 题目分析: 1.每个字符串都是长为m+1的字符串,两个字符串匹配后长度应该为1+m+1=m+2; 2.用图的思想来解。如果某两个顶点匹配,则在图中的该两点连线,当遍历完所有点之后,
·
2015-10-27 14:37
字符串
字符串匹配算法 【微软
面试100题
第三十三题】
题目要求: 给一串很长字符串,要求找到符合要求的字符串。 例如目的串:123,则1*****3***2,12*****3这些都要找出来。 其实就是类似一些和谐系统。。。。。。 题目分析: 1.假如目的串为:"423",输入长字符串为:"4fsdfk2jfl3fd2jfksd3j4d4d4jkfd4jd3kdf2",则应该输出 &q
·
2015-10-27 14:36
字符串
实现一个队列 【微软
面试100题
第三十四题】
题目要求: 实现一个队列。队列的应用场景是:一个生产者线程将int型的数入列,一个消费者线程将int型的数出列。 参考资料: 编程之美1.10 题目分析: 可以按照操作系统中的生产者与消费者模型来实现代码,大致思路如下: void producer(void) { while(1) { item = produce_item();
·
2015-10-27 14:36
面试
包含min函数的栈 【微软
面试100题
第二题】
题目要求:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1). 参考题目:剑指offer第21题. 题目分析: 1.采用面向对象思想,定义类StackWithMin,包含min、push和pop等方法; 2.StackWithMin类中包含两个栈:一个数据栈,一个辅助栈。数据栈中是每次压入的实际数据
·
2015-10-27 14:35
面试
跳台阶问题 【微软
面试100题
第二十七题】
题目要求: 一个台阶总共有n阶,如果一次可以跳1级,也可以跳2级。求总共有多少种跳法,并分析算法的时间复杂度。 题目分析: f(n)=f(n-1)+f(n-2),f(1)=1,f(2)=2;--->f(3)=f(2)+f(1)=2+1;------>f(3)=Fibonacci(4)=Fibonacci(3)+Fibonacci(2) = 2+1;即问题转换为斐波那契数列
·
2015-10-27 14:35
面试
上一页
3
4
5
6
7
8
9
10
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他