
VS2013实战拆解面试题
文章平均质量分 79
VS2013实战拆解面试题,用最新的IDE,用可以编译的代码解决面试题。
尹成
尹成微信18510341407,助理微信18514203048
展开
-
基于visual Studio2013解决面试题之0201二叉树转链表
题目解决代码及点评/* 问题:将二叉树转换成链表 总体框架: 1)main函数获取用户输入 2)通过CreatTree函数把数字放入二叉树 3)通过pPutInLink函数,遍历树,讲节点通过insert函数放入链表 4)打印输出*/#include using namespace std;/* 树节点结构体定义,包括保存的value和两个子树节点*/typ原创 2013-12-12 19:17:20 · 2423 阅读 · 3 评论 -
基于visual Studio2013解决面试题之0203栈实现
题目解决代码及点评/* 用模板类实现栈 *//* 标准输入输出流头文件 */#include /* 将标准库的std命名空间下标示符提升到全局 */using namespace std;/* 定义栈模板库 */template class stack{public: stack(int len = 10); /* 构造函数,默认栈深度为10 */ ~stac原创 2013-12-13 00:29:03 · 2117 阅读 · 0 评论 -
基于visual Studio2013解决面试题之0204最大子集数组
题目解决代码及点评/* 在一个数组里n0, n1,n2...nk中,定义(0< i,j < n)可以得到一个子集数组 求和最大的子集数组 解决思路: 1)遍历数组,进行累加 2)每次累加的值和当前max做判断,如果大于max,则取代max 3)每次累加的值和0比较,如果<0,则放弃累加值清0*/#include using namespace std;int原创 2013-12-13 00:32:20 · 2027 阅读 · 1 评论 -
基于visual Studio2013解决面试题之0205查找路径
题目解决代码及点评/* 在一棵树中,获取和为某个值的所有路径 比如有树如下 1 / \ 2 3 / \ /\ 5 7 6 7 如果和为10,那么可以得到两个,有两个路径1、2、7和1、3、6*//* 标准输入输出头文件 */#include /* 标准库中栈容器头文件 */#include using namespa原创 2013-12-13 00:37:58 · 1969 阅读 · 0 评论 -
基于visual Studio2013解决面试题之0206hash表实现
题目解决代码及点评/* hash表,是用hash算法将任意长度的二进制值,映射为较短的固定范围的二进制值 在这个例子里,我们简单的使用 %10作为我们的hash算法。 对10取模会导致经常的冲突,比如13和23,对10取模之后都是3,这种情况下叫做hash算法的冲突 为了解决冲突,需要在一个hash节点上使用链表数据结构来保存冲突的多个数据。*/#include #inc原创 2013-12-13 00:41:52 · 2410 阅读 · 4 评论 -
基于visual Studio2013解决面试题之0207单词翻转
题目解决代码及点评/* 单词翻转, 比如 you are 变成 are you,并非完全字符串翻转 是根据空格为单位的单词进行翻转,单词却依然完整。 方法是从句子尾部开始遍历,一旦发现空格,则从空格的下一个字母开始打印一个单词 一旦到了句子的第一个字母,也打印单词*/#include #include #include #include #include using原创 2013-12-13 00:46:24 · 2380 阅读 · 1 评论 -
基于visual Studio2013解决面试题之0202上下排
题目解决代码及点评/* 上下排是指:根据上排的数字,下排对应的数字是上排数字在下排出现的次数,比如 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次 ... 现在已知上排,求下排 思路: 不停的循环尝试,一直尝试到下排没有数据修改为止*/#include #includ原创 2013-12-13 01:20:00 · 2177 阅读 · 0 评论 -
基于visual Studio2013解决面试题之0208二叉搜索树后序遍历序列
题目解决代码及点评/* 给出一个数组,判断该数组是否为二叉搜索树的后序遍历 后序遍历是先遍历左子树,再遍历右子树,最后访问根节点 所以,后序遍历的特点是,最后一个元素是根节点 在数组剩下的部分里,某连续的部分P1小于根节点,而某连续的部分P2全部大于根节点 对P1和P2来说,分别是两个子树的后序遍历,因此使用递归即可*/#include using namespace s原创 2013-12-13 01:41:36 · 2054 阅读 · 2 评论 -
基于visual Studio2013解决面试题之0209最大堆排序
题目解决代码及点评/* 最大堆是一个数组数据结构,任意一个下标i,它的值大于i*2和i*2+1的值(i从1开始) 当这样的堆形成时,最大值在数组最开始的位置。 当这样的堆形成后,将第一个元素交换到最后,并在剩余的数据中再调整堆,形成新的堆 如此反复完成排序*/#include using namespace std;void swap(int *a, int *b)原创 2013-12-13 02:19:21 · 2181 阅读 · 3 评论 -
基于visual Studio2013解决面试题之0210树的最远距离
题目解决代码及点评/* 二叉树的最大距离:将二叉树看成图,节点之间的距离为中间的线,求最大节点距离 解决: 如果左子树和右子树都不为空:最大距离 = 左子树深度 + 右子树深度 + 2 */#include #include using namespace std;// 树节点定义templateclass BiTNode{public: T nValue;原创 2013-12-13 02:46:16 · 2118 阅读 · 3 评论 -
基于visual Studio2013解决面试题之0301累加
题目解决代码及点评/* 求 1+2+3+...+n 要求不能使用乘除法、for、while、if、else、switch、case 等关键字 以及条件判断语句(A?B:C) 解决思路: 通过全局变量(或者静态类变量)来记录累加的和,以及累加到的数字 通过构造函数来实现累加*/#include using namespace std;#define N 100原创 2013-12-13 14:33:41 · 2449 阅读 · 0 评论 -
基于visual Studio2013解决面试题之0302链表中找倒数k项节点
题目解决代码及点评/* 题目:已知单向链表,有n个元素,求倒数第k个元素,要求时间复杂度O(n) 思路:需要两个指针p1,p2,p1先往前走,p2在p1走了k步之后跟随,这样当p1到了尾部时,p2就到了倒数第k的位置*/#include #include using namespace std;// 链表节点类// 包含_value和_next两个成员class L原创 2013-12-13 14:36:54 · 2525 阅读 · 0 评论 -
基于visual Studio2013解决面试题之0303数组求和
题目解决代码及点评/* 输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是 O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。*/#include using namespace std;// 查找函数,pnArr是有序数组// nLen是数组长度// nSum是期望的和// a,b是查找结原创 2013-12-13 14:40:16 · 2686 阅读 · 2 评论 -
基于visual Studio2013解决面试题之0304镜像二叉树
题目解决代码及点评/* 输入一颗二元查找树,将该树转换为它的镜像 镜像的意思是原来二叉搜索树,是左子树 root > 右子树*/#include using namespace std;// 树节点,包括左二子、右儿子指针和保存的值class TreeNode{public: TreeNode* _left; TreeNode* _right; int _val原创 2013-12-13 14:43:03 · 2205 阅读 · 3 评论 -
基于visual Studio2013解决面试题之0305广度优先搜索二叉树
题目解决代码及点评/* 输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序 打印 层次遍历二叉树 解决方法,使用广度优先搜索*/#include #include using namespace std;// 树节点,包括左二子、右儿子指针和保存的值class TreeNode{public: TreeNode* _left; Tr原创 2013-12-13 14:46:43 · 2187 阅读 · 2 评论 -
基于visual Studio2013解决面试题之0306打印第一次只出现一次的字符
题目解决代码及点评/* 在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b*/#include #include using namespace std;/* 在字符串中查找第一个只出现一次的字符串 */void FindChar(const string &strBuf){ int nArr[256]; //使用表格,来记录出原创 2013-12-13 14:50:24 · 2168 阅读 · 3 评论 -
基于visual Studio2013解决面试题之0307最后谁剩下
题目解决代码及点评/*n 个数字(0,1,…,n-1)形成一个圆圈,从数字 0 开始,每次从这个圆圈中删除第 m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第 m 个数字。求出在这个圆圈中剩下的最后一个数字。*/#include using namespace std;// 链表节点,我们使用链表来进行操作,目原创 2013-12-13 14:56:33 · 2310 阅读 · 2 评论 -
基于visual Studio2013解决面试题之0308Fibonacci数列
题目解决代码及点评/*题目:定义 Fibonacci 数列如下:/ 0 n=0f(n)= 1 n=1/ f(n-1)+f(n -2) n=2输入 n,用最快的方法求该数列的第 n 项。*/#include using namespace std;//递归实现int Fibonacci(int n){ if (n < 2) { return n; } el原创 2013-12-13 15:00:43 · 2120 阅读 · 0 评论 -
基于visual Studio2013解决面试题之0309左移递减序列搜索
题目解决代码及点评/* 左移递减数列查找某一个数 左移递减数列,指一个数列是由一个递减数列左移而来 比如[6,5,4,3,2,1] 左移两位得到[4,3,2,1,6,5] 在左移数列中查找某一个数 想法:依旧可以用二分查找法,因为这样的数列二分之后,至少有一半是有序的*/#include using namespace std;// 这个函数是一个有序序列的二分查找原创 2013-12-13 15:07:47 · 2207 阅读 · 0 评论 -
基于visual Studio2013解决面试题之0401非递归遍历二叉树
题目解决代码及点评/* 非递归实现中序遍历二叉树 中序遍历概念:先访问左子树,然后再访问根节点,然后再访问右子树 用递归的方法非常简单,理解思想几行代码,但是不用递归该如何实现? 不用递归,则需要用栈来保存现场,要遍历左子树之前,将根节点压栈 再访问左子树,当该根节点要被弹出来时,说明左子树已经遍历完毕 以下代码只注释inOrder,其他类推即可*/#include原创 2013-12-13 15:14:09 · 2412 阅读 · 2 评论 -
基于visual Studio2013解决面试题之0402合并升序链表并去重
题目解决代码及点评/* 两个升序链表合并,并要求去掉重复元素*/#include using namespace std;class LinkNode{public: int _val; LinkNode* _next; LinkNode(int val, LinkNode* next = NULL) :_val(val), _next(next){}};clas原创 2013-12-14 23:56:45 · 2070 阅读 · 3 评论 -
基于visual Studio2013解决面试题之0403串联字符串
题目解决代码及点评/* 有 n个长为 m+1的字符串,如果某个字符串的最后m个字符与某个字符串的前m个字符匹配,则两个字符串可以联接, 问这n个字符串最多可以连成一个多长的字符串,如果出现循环,则返回错误。 */#include using namespace std;int maxlengh = 0;void go(char *a[20], char **a2, i原创 2013-12-15 00:03:35 · 2343 阅读 · 2 评论 -
基于visual Studio2013解决面试题之0405和最大的子矩阵
题目解决代码及点评/* 在一个矩阵中,找到和最大的【2*2】的子矩阵*/#include using namespace std;const int N = 4;int main(){ int index[2] = { 0 }; int max = 0; // 待分析数据 int a[N][N] = { { 4, 5, 1, 6 }, { 1, 7, 10, 1原创 2013-12-15 00:14:31 · 2301 阅读 · 3 评论 -
基于visual Studio2013解决面试题之0407数组差
题目解决代码及点评/* 通过交换a,b中的元素,是的a序列的和 与 b序列的和 之间的差最小 比如a = [1, 2, 3, 4, 5] b = [6, 7, 8, 9, 10] 那么把b中一些大的交换到a去,使得他们之间的差值更小 思路: 假设a的和为sa,b的和为sb,那么他们的差值 diff = abs(sa-sb); 为了缩小差距,那么需要交换两个值,如原创 2013-12-15 01:18:39 · 2957 阅读 · 0 评论