100题
BurningWall
这个作者很懒,什么都没留下…
展开
-
第一题(二元查找树转变成排序的双向链表)
sdfd namespace MS100P_1{ struct BSTreeNode { int m_nValue; // value of node BSTreeNode *m_pLeft; // left child of node BSTreeNode *m_pRight; // right child of node }; void convert(BSTreeN原创 2014-07-10 10:18:25 · 467 阅读 · 0 评论 -
第二十题(字符串转换成整数)
第#include#includeusing namespace std;namespace MS100P_20{ int atoi(const char* str) { if (str == NULL) { cout << "null string,error!" << endl; return -1; } int result = 0;原创 2014-06-21 16:01:41 · 720 阅读 · 0 评论 -
第十七题(找出字符串中第一个只出现一次的字符)
题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。分析:这道题是2006 年go原创 2014-06-20 16:52:17 · 851 阅读 · 0 评论 -
第二题(设计包含min 函数的栈)
2.设计包含min 函数的栈。定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。要求函数min、push 以及pop 的时间复杂度都是O(1)。原创 2014-07-12 17:14:53 · 591 阅读 · 0 评论 -
第七题(俩个链表是否相交)
第7 题微软亚院之编程判断俩个链表是否相交给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。原创 2014-07-12 16:35:14 · 484 阅读 · 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,00 在下排出现了6 次,1 在下排出现了2 次,2 在下排出现了1 次,原创 2014-07-12 16:27:05 · 1046 阅读 · 0 评论 -
第四题(在二元树中找出和为某一值的所有路径)
4.在二元树中找出和为某一值的所有路径题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22 和如下二元树10/ \5 12/ \4 7则打印出两条路径:10, 12 和10, 5, 7。二元树节点的数据结构定义为:struct BinaryTreeNode原创 2014-07-12 12:44:22 · 545 阅读 · 0 评论 -
第五十三题(字符串的排列)
53.字符串的排列。题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c 所能排列出来的所有字符串abc、acb、bac、bca、cab 和cba。原创 2014-07-10 16:38:58 · 508 阅读 · 0 评论 -
第九题(判断整数序列是不是二元查找树的后序遍历结果)
第9 题判断整数序列是不是二元查找树的后序遍历结果题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:8/ \6 10/ \ / \5 7 9 11因此返回true。如果输入7、4、6、5,没有哪棵树的后序遍历的结果是原创 2014-07-10 11:56:43 · 885 阅读 · 0 评论 -
第五十七题(用俩个栈实现队列)
57.用俩个栈实现队列。题目:某队列的声明如下:template class CQueue{public:CQueue() {}~CQueue() {}void appendTail(const T& node); // append a element to tailvoid deleteHead(); // remove a element from head原创 2014-07-10 17:45:17 · 457 阅读 · 0 评论 -
第四十八题(左移递减数组中查找某一个数)
48.微软:一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数。 int findInShift(int data[], int begin,int end,int x) { if (begin < end) return -1; int mid = (begin + end) / 2;原创 2014-07-10 15:14:39 · 630 阅读 · 0 评论 -
第十题(翻转句子中单词的顺序)
第10 题翻转句子中单词的顺序。题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。原创 2014-07-10 11:59:38 · 487 阅读 · 0 评论 -
第五十二题(二元树的深度)
52.二元树的深度。题目:输入一棵二元树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。例如:输入二元树:10/ \6 14/ / \4 12 16输出该树的深度3。namespace MS100P_52{ struct SBinaryTreeNode // a nod原创 2014-07-10 15:56:16 · 512 阅读 · 0 评论 -
第二十四题(链表的逆序)
#include "stdafx.h"#include#include#include#include#include #includeusing namespace std;namespace MS100P_24{struct node{int data;node* next;};node* createList(int len)原创 2014-06-22 11:51:59 · 746 阅读 · 0 评论 -
第十五题(二元查找树镜像翻转)
namespace MS100P_15{ struct BinaryTreeNode // a node in the binary tree { int m_nValue; // value of node BinaryTreeNode *m_pLeft; // left child of node BinaryTreeNode *m_pRight; // right chil原创 2014-06-20 15:36:31 · 681 阅读 · 0 评论 -
第五十一题 和为n 连续正数序列
51.和为n 连续正数序列。题目:输入一个正数n,输出所有和为n 连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3 个连续序列1-5、4-6 和7-8。代码如下:public static void findSeqSum(int sum) { int begin=1,end=2,mid=sum/2,curSum=begin+end;原创 2014-08-23 23:07:43 · 793 阅读 · 1 评论 -
第二十九题(判断pop序列是否和push序列对应)
29.栈的push、pop序列题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。分析:原创 2014-06-23 00:39:39 · 1208 阅读 · 0 评论 -
第二十八题(整数的二进制表示中1的个数)
这道题的另外一种原创 2014-06-22 17:26:38 · 735 阅读 · 0 评论 -
第二十七题(跳台阶问题)
题目:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度。原创 2014-06-22 16:07:21 · 913 阅读 · 0 评论 -
第十九题(最快的方法求Fibonacci数列)
题目:定义Fibonacci 数列如下: / 0 n=0f(n)= 1 n=1 \ f(n-1)+f(n-2) n=2输入n,用最快的方法求该数列的第n 项。原创 2014-06-21 01:29:45 · 1275 阅读 · 0 评论 -
第十八题(约瑟夫环问题)
第18 题:题目:n 个数字(0,1,…,n-1)形成一个圆圈,从数字0 开始,每次从这个圆圈中删除第m 个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m 个数字。求出在这个圆圈中剩下的最后一个数字。原创 2014-06-20 22:35:32 · 2257 阅读 · 0 评论 -
第十四题(升序数组中寻找和为特定数的两个元素)
题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15 和数字15。由于4+11=15,因此输出4 和11。原创 2014-06-20 14:42:27 · 871 阅读 · 0 评论 -
第二十一题(求数组中和为特定数的所有组合)
的#includenamespace MS100P_21{ //递归 void helper(int index, int m, int n, list& record) { if (index <= n) { if (index == m) { helper(index + 1, m, n, record); record.push_b原创 2014-06-21 18:23:13 · 6665 阅读 · 0 评论 -
第十三题(输出该链表中倒数第k 个结点)
第13 题:题目:输入一个单向链表,输出该链表中倒数第k 个结点。链表的倒数第0 个结点为链表的尾指针。链表结点定义如下:struct ListNode{int m_nKey;ListNode* m_pNext;};原创 2014-07-12 18:02:51 · 549 阅读 · 0 评论 -
第十六题(树的层序遍历)
输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。例如输入8/ \6 10/ \ / \5 7 9 11输出8 6 10 5 7 9 11原创 2014-06-20 15:58:17 · 679 阅读 · 0 评论 -
第二十六题(字符串左旋)
违法namespace MS100P_26{ //方法1:先分别翻转字符串ab,cdef,再整体翻转 void leftShift1(char *s, int n) { int length = strlen(s); int temp; for (int i = 0; i < n/2; i++) //局部翻转 { temp = s[i]; s[i]原创 2014-06-22 15:14:03 · 773 阅读 · 0 评论 -
第二十五题(找出字符串中最长的数字串)
水电费原创 2014-06-22 13:56:32 · 1250 阅读 · 0 评论 -
第四十九题(排序,要求时间复杂度O(n),空间复杂度O(1))
49.一道看上去很吓人的算法面试题:如何对n 个数进行排序,要求时间复杂度O(n),空间复杂度O(1)。原创 2014-07-10 17:00:19 · 1007 阅读 · 0 评论 -
第四十三题(递归和非递归俩种方法实现二叉树的前序遍历)
43.递归和非递归俩种方法实现二叉树的前序遍历原创 2014-07-10 13:41:04 · 587 阅读 · 0 评论 -
第八十五题(字符串复制和匹配)
85.又见字符串的问题1.给出一个函数来复制两个字符串A 和B。字符串A 的后几个字节和字符串B 的前几个字节重叠。原创 2014-07-06 02:41:04 · 729 阅读 · 0 评论 -
第九十六题(编写strcpy 函数)
96.08 年中兴校园招聘笔试题1.编写strcpy 函数已知strcpy 函数的原型是char *strcpy(char *strDest, const char *strSrc);其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数,请编写函数strcpy。原创 2014-07-04 20:19:01 · 876 阅读 · 0 评论 -
第六十题(在O(1)时间内删除链表结点)
题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点。原创 2014-07-04 17:18:38 · 704 阅读 · 0 评论 -
第五十九题(用C++设计一个不能被继承的类)
题目:用C++设计一个不能被继承的类。分析:这是Adobe 公司2007 年校园招聘的最新笔试题。这道题除了考察应聘者的C++基本功底外,还能考察反应能力,是一道很好的题目。分析原创 2014-07-04 17:10:04 · 733 阅读 · 0 评论 -
第五十八题(从尾到头输出链表)
对方得分#include "stdafx.h"#include#includenamespace MS100P_58{ void reversePrintList(node* p) { if (p == NULL) return; reversePrintList(p->next); cout data << ' '; } void test() {原创 2014-07-04 15:53:56 · 687 阅读 · 0 评论 -
第五十四题(调整数组顺序使奇数位于偶数前面)
题目:namespace MS100P_54{ void createArray(int iArray[], int arrayLen) { srand((unsigned int)time(0)); for (int i = 0; i < arrayLen; i++) { iArray[i] = rand() % 189; } } void prin原创 2014-07-04 15:27:34 · 625 阅读 · 0 评论 -
第五十六题(最长公共子串)
最长公共字串。题目:如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串。注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中。请编写一个函数,输入两个字符串,求它们的最长公共子串,并打印出最长公共子串。例如:输入两个字符串BDCABA 和ABCBDAB,字符串BCBA 和BDAB 都是是它们的最长公共子串,则输出它们的原创 2014-07-03 10:25:02 · 973 阅读 · 0 评论 -
第五题(查找最小的k 个元素)
5.查找最小的k 个元素题目:输入n 个整数,输出其中最小的k 个。例如输入1,2,3,4,5,6,7 和8 这8 个数字,则最小的4 个数字为1,2,3 和4。思路:选择排序,fuz原创 2014-07-12 16:11:55 · 1042 阅读 · 0 评论 -
第八十四题 (百度面试题)
第4组百度面试题 2010 年3 道百度面试题[相信,你懂其中的含金量] 1)a~z 包括大小写与0~9 组成的N 个数, 用最快的方式把其中重复的元素挑出来。原创 2014-07-19 00:32:25 · 572 阅读 · 0 评论 -
第四十七题(求最长递减子序列)
复杂对象的构建与它的表示分离,使得同样的构建过#includeusing namespace std;namespace MS100P_47{ /* 求一个数组的最长递减子序列 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}*/ void printArray(int dp[], int data[], int k) { for (原创 2014-06-29 23:33:17 · 843 阅读 · 0 评论 -
第十一题(求二叉树中节点的最大距离)
递归求解对于一个根节点,取 左子树最大深度+右子树最大深度,左子树最大距离,右子树最大距离这三种情况的最大值对于叶子节点,深度,最大距离都是0采用引用传递参数的方式,取得子树的深度原创 2014-06-26 10:11:51 · 764 阅读 · 0 评论