面试杂七杂八
匿名侠士
非典型的搬砖工
展开
-
1.把二元查找树转变成排序的双向链表
1.把二元查找树转变成排序的双向链表题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4 8 12 16转换成双向链表4=6=8=10=12=14=16。首先我们定义的二元查找树节点的数据结构如下:s翻译 2014-08-19 18:59:42 · 397 阅读 · 0 评论 -
24 单链表就地逆置,合并链表
/*第 24 题:链表操作,(1).单链表就地逆置,(2)合并链表*/node * reverseNonrecurse(node *head){ if(head==NULL) return head; node *p=head,*previous=NULL,*next=NULL; while(p->next!=NULL) { next=p->next;//保原创 2014-09-18 19:30:28 · 1273 阅读 · 0 评论 -
25 字符串中找出连续最长的数字串,返回长度
/*第 25 题:写一个函数,它的原形是 int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数 outputstr 所指内存。例如:"abcd12345ed125ss123456789" 的首地址传给 intputstr 后,函数将返回 9,原创 2014-09-18 19:31:41 · 597 阅读 · 0 评论 -
26 左旋转操作:把字符串前面的若干个字符移动到尾部
/*26.左旋转字符串题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串 abcdef左旋转 2位得到字符串 cdefab。请实现字符串左旋转的函数。要求时间对长度为n的字符串操作的复杂度为 O(n),辅助内存为 O(1)。*/#include#include#includeusing namespace std;char* leftSh原创 2014-09-18 19:34:58 · 480 阅读 · 0 评论 -
27 跳台阶,跳1级或2级,求总共多少跳法
/*27 跳台阶,跳1级或2级,求总共多少跳法27.跳台阶问题 60题目:一个台阶总共有n级,如果一次可以跳 1 级,也可以跳 2 级。求总共有多少总跳法并分析算法的时间复杂度简单题 ,递推即可 f(n)=f(n-1)+f(n-2), f(1)=1, f(2)=2;递归实现,也是最慢的,算法时间复杂度O(n^2)算法时间复杂度O(n)*/#include#inclu原创 2014-09-18 19:35:01 · 628 阅读 · 0 评论 -
28 整数的二进制表示中1的个数
/*28.整数的二进制表示中 1 的个数题目:输入一个整数,求该整数的二进制表达中有多少个 1。例如输入 10,由于其二进制表示为 1010,有两个 1,因此输出 2。*/#include#include#includeusing namespace std;/*其原理是不断清除n的二进制表示中最右边的1,同时累加计数器,直至n为0,n-1与n相同除了最低位 n相当于在n原创 2014-09-18 19:36:56 · 622 阅读 · 0 评论 -
29 栈的 push、pop 序列
/*29.栈的 push、pop 序列题目:输入两个整数序列。其中一个序列表示栈的 push 顺序, 61判断另一个序列有没有可能是对应的 pop 顺序。为了简单起见,我们假设 push 序列的任意两个整数都是不相等的。比如输入的 push 序列是 1、2、3、4、5,那么 4、5、3、2、1 就有可能是一个 pop 系列。因为可以有如下的 push 和 pop 序原创 2014-09-19 16:31:24 · 557 阅读 · 0 评论 -
32 通过交换使a元素的和与b元素的和]之间的差最小
/*32.有两个序列 a,b,大小都为 n,序列元素的值任意整数,无序;要求:通过交换 a,b 中的元素,使[序列 a 元素的和]与[序列 b 元素的和]之间的差最小。例如:var a=[100,99,98,1,2, 3];var b=[1, 2, 3, 4,5,40];首先先计算a,b中元素和之间的差绝对值D,然后逐一的把a中的元素和b中的任一元素作比较,如果它们交换后的原创 2014-09-20 14:19:55 · 513 阅读 · 0 评论 -
32 通过交换使a元素的和与b元素的和]之间的差最小
/*32.有两个序列 a,b,大小都为 n,序列元素的值任意整数,无序;要求:通过交换 a,b 中的元素,使[序列 a 元素的和]与[序列 b 元素的和]之间的差最小。例如:var a=[100,99,98,1,2, 3];var b=[1, 2, 3, 4,5,40];首先先计算a,b中元素和之间的差绝对值D,然后逐一的把a中的元素和b中的任一元素作比较,如果它们交换后的原创 2014-09-20 20:53:28 · 640 阅读 · 1 评论 -
35 求一个矩阵中最大的二维矩阵(元素和最大)
/*35.求一个矩阵中最大的二维矩阵(元素和最大).如:1 2 0 3 42 3 4 5 11 1 5 3 0中最大的是:4 55 3要求:(1)写出算法;(2)分析时间复杂度;(3)用 C 写出关键代码思想很简单,每次计算周围的四个矩阵的元素和计算二维子矩阵的和(sum=a[i,j]+a[i+1,j]+a[i,j+1]+a[i+1,j+1]) 时间复杂度为O(i*j)原创 2014-09-21 20:42:18 · 1151 阅读 · 0 评论 -
36 输出比赛名次的数组result
/*36.引用自网友:longzuo谷歌笔试:n支队伍比赛,分别编号为 0,1,2。。。。n-1,已知它们之间的实力对比关系,存储在一个二维数组 w[n][n]中,w[i][j] 的值代表编号为 i,j 的队伍中更强的一支。所以 w[i][j]=i 或者 j,现在给出它们的出场顺序,并存储在数组 order[n]中,比如 order[n] = {4,3,5,8,1......},原创 2014-09-21 20:41:36 · 531 阅读 · 0 评论 -
6 给你 10 分钟时间,根据上排给出十个数,在其下排填出对应的十个数
/*第 6 题腾讯面试题:给你 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原创 2014-09-10 20:57:19 · 703 阅读 · 0 评论 -
39 二叉树中两个节点最大距离
/*39.网易有道笔试:(1).求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边的个数,比如某个孩子节点和父节点间的距离是 1,和相邻兄弟节点间的距离是 2,优化时间空间复杂度。把最深的左子树距离加上最深的右子树距离就是二叉树中两个节点的最大距离。*/ #include#include#includeusing namespace std;原创 2014-09-22 20:55:27 · 492 阅读 · 0 评论 -
39 求一个有向连通图的割点
/*(2).求一个有向连通图的割点,割点的定义是,如果除去此节点和与其相关的边,有向图不再连通,描述算法。1. 最简单也是最直接的算法是,删除一个点然后判断连通性,如果删除此点,图不再连通,则此点是割点,反之不是割点(图的连通性一般通过深搜来判定,是否能一次搜索完全部顶点);2. 通过深搜优先生成树来判定。从任一点出发深度优先遍历得到优先生成树,对于树中任一顶点V而言,其孩子节点原创 2014-09-22 20:58:20 · 932 阅读 · 0 评论 -
37 最长字符串链接
/*37.有n长为 m+1 的字符串,如果某个字符串的最后 m 个字符与某个字符串的前 m 个字符匹配,则两个字符串可以联接,问这 n个字符串最多可以连成一个多长的字符串,如果出现循环,则返回错误。将各个字符串作为一个节点,首尾链接就好比是一条边,将两个节点连接起来,于是问题就变成一个有关图的路径长度的问题。链接所得的字符串最长长度即为从图的某个节点出发所能得到的最长路径问题,原创 2014-09-22 20:49:09 · 611 阅读 · 0 评论 -
9 判断整数序列是不是二元查找树的后序遍历结果
/*第 9 题判断整数序列是不是二元查找树的后序遍历结果题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回 true,否则返回 false。例如输入 5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / \ 6 10 / \ / \ 5 7 9 11因此返回 true。如果输原创 2014-09-12 11:14:49 · 462 阅读 · 0 评论 -
40_1 栈结构,满足min,push,pop
/*401)设计一个栈结构,满足一下条件:min,push,pop 操作的时间复杂度为 O(1)。使用一个辅助栈来保存最小元素,该辅助栈名字为minimum stack,其栈顶元素为当前栈中的最小元素。要获取当前栈中最小元素,只需要返回minimum stack的栈顶元素即可。每次执行push操作,检查push的元素是否小于或等于minimum stack栈顶元素。如果是,则也原创 2014-09-24 14:14:01 · 620 阅读 · 0 评论 -
12求 1+2+…+n
/*第 12 题题目:求 1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句递归实现,解决终止即可 */#include#include#includeusing namespace std;int sum;bool fun(int x){ sum+=x; return x&&fun(x-1)原创 2014-09-15 15:06:29 · 666 阅读 · 0 评论 -
微软等数据结构+算法面试 100 题
作者声明:转载或引用以下任何资料、或题目,请注明作者本人 July 及出处。转载 2014-09-24 14:18:35 · 1148 阅读 · 0 评论 -
45 雅虎判断其是否能够由一个全零矩阵经过上述运算得到
/*45.雅虎:1.对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一,现给出一正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到。不会,用最大流? http://www.360doc.com/content/12/0323/13/1429048_196949964.shtml*/原创 2014-09-26 12:26:14 · 688 阅读 · 0 评论 -
45 整数数组,将其分为m份使各份的和相等
/*45.雅虎:2.一个整数数组,长度为 n,将其分为 m 份,使各份的和相等,求 m 的最大值比如{3,2,4,3,6} 可以分成{3,2,4,3,6} m=1;{3,6}{2,4,3} m=2{3,3}{2,4}{6} m=3 所以m的最大值为 3将整个数组作为一个集合,最大的可能值就是集合的大小了,最小肯定是1,那么从2开始一次判断。如果集合可被k等分,那么首先集合原创 2014-09-26 12:29:58 · 1669 阅读 · 0 评论 -
46 四对括号可以有多少种匹配排列方式
/*46.搜狐:四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())排列问题,注意当前右括号的数量不能超过左括号*/#include using namespace std; //匹配数 int num=0; //判断当前n对括号是否匹配 bool isMatch(int n,char* bracket) { int le原创 2014-09-26 12:29:48 · 763 阅读 · 0 评论 -
40_3 设计一个系统处理词语搭配,比如中国和人民可以搭配
/*3)设计一个系统处理词语搭配问题,比如说中国和人民可以搭配,则中国人民人民中国都有效。要求: *系统每秒的查询数量可能上千次;*词语的数量级为 10W;*每个词至多可以与 1W 个词搭配当用户输入中国人民的时候,要求返回与这个搭配词组相关的信息。这参考别人的,还有个说用二叉树 那个字典树怎么样? 谁指导指导。。 分析:搜索端使用多线程处理,现在服务器都是多核的,可以充原创 2014-09-24 14:14:13 · 1654 阅读 · 0 评论 -
16 输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
/*第 16 题:题目(微软): 输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。 8 / \ 6 10 / \ / \ 5 7 9 11打印出来:8 6 10 5 7 9 11BFS广度优先搜索 */ #include#include#include#include using namespace原创 2014-09-16 14:32:31 · 993 阅读 · 0 评论 -
17 在一个字符串中找到第一个只出现一次的字符
/*第 17 题:题目:在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b。利用计数来着? */ #include#includeusing namespace std;char find(char *str){ char *p=str; int sum[256]; memset(sum,0,sizeof(sum)); whi原创 2014-09-16 14:33:17 · 613 阅读 · 0 评论 -
44 腾讯面试题 魔方 短信 url
/*44.腾讯面试题(算法):1.设计一个魔方(六面)的程序。2.有一千万条短信,有重复,以文本文件的形式保存,一行一条,有重复。 请用 5 分钟时间,找出重复出现最多的前 10 条。3.收藏了 1 万条 url,现在给你一条 url,如何找出相似的 url。(面试官不解释何为相似)*/ /*44.腾讯面试题:1.设计一个魔方(六面)的程序。magicCube对象: 6原创 2014-09-26 12:24:46 · 1357 阅读 · 0 评论 -
14 在数组中查找两个数,使得它们的和正好是输入的那个数字
/*第 14 题:题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是 O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组 1、2、4、7、11、15 和数字 15。由于 4+11=15,因此输出 4 和 11。用2个指针 从头和尾 遍历 */#include#includeusin原创 2014-09-16 14:28:48 · 616 阅读 · 0 评论 -
22 4张红色的牌和4张蓝色的牌。;23 快速的方法计算出下面这个圆形是否和正方形相交
/*第 22 题:有 4 张红色的牌和 4 张蓝色的牌,主持人先拿任意两张,再分别在 A、B、C 三人额头上贴任意两张牌,A、B、C 三人都可以看见其余两人额头上的牌,看完后让他们猜自己额头上是什么颜色的牌,A 说不知道,B 说不知道,C 说不知道,然后 A 说知道了。请教如何推理,A 是怎么知道的。如果用程序,又怎么实现呢?*//*因为第一次三者都说不知原创 2014-09-17 22:25:49 · 958 阅读 · 0 评论 -
42 修改append函数,实现:两个非降序链表的并集
/*42.请修改 append 函数,利用这个函数实现:两个非降序链表的并集,1->2->3 和 2->3->5 并为 1->2->3->5另外只能输出结果,不能修改两个链表的数据。*/ #include#include#includeusing namespace std;struct node{ int data; struct node *next;};原创 2014-09-25 17:14:05 · 1084 阅读 · 0 评论 -
19 用最快的方法求该数列的第 n 项
/*基本的方法有2种还有个网上方法: 其数学基础:方阵{ f(n), f(n-1), f(n-1), f(n-2) } = {1, 1, 1,0 }n-1方 即前者表示一个2X2的方阵,后者表示一个第一行为1,1、第二行为1,0的方阵的n-1次方。矩阵{1,1,1,0}的n-1次方的结果的第一行第一列就是f(n),现在的问题转换为求矩阵{1, 1, 1, 0}的乘方。但我原创 2014-09-17 19:01:30 · 519 阅读 · 0 评论 -
20 输入一个表示整数的字符串,把该字符串转换成整数并输出。
/*第 20 题:题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数 345。*/#include#includeusing namespace std;int charToNum(char *str){ int neg=0,num; char *p=str; if(*p=='-') { p++; neg=1;原创 2014-09-17 22:22:52 · 641 阅读 · 0 评论 -
21 整数n和m,随意取几个数, 使其和等于m ,要求将其中所有的可能组合列出来
/*第 21 题2010 年中兴面试题编程求解:输入两个整数n和m,从数列 1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.*/#include#includeusing namespace std;int n,m;void printResult(int sum[],int n){ int i; for(i=0原创 2014-09-17 22:24:07 · 635 阅读 · 0 评论 -
83.第 3 组百度面试题 数组使得数组左边为奇数,右边为偶数
83.第 3 组百度面试题1.今年百度的一道题目百度笔试:给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。要求:空间复杂度 O(1),时间复杂度为 O(n)。/*83.第 3 组百度面试题1.今年百度的一道题目百度笔试:给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。要求:空间复杂度 O(1),时间复杂度为 O(n)。与5原创 2014-10-22 22:24:30 · 736 阅读 · 0 评论 -
138 顺时针打印矩阵
38、顺时针打印矩阵题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵:1 2 3 45 6 7 89 10 11原创 2014-11-09 16:53:42 · 728 阅读 · 0 评论 -
84_1 最快的方式把其中重复的元素找出来
84.第4组百度面试题2010年3道百度面试题[相信,你懂其中的含金量]1.a~z包括大小写与 0~9组成的N个数,用最快的方式把其中重复的元素挑出来。/*84.第4组百度面试题2010年3道百度面试题[相信,你懂其中的含金量]1.a~z包括大小写与 0~9组成的N个数,用最快的方式把其中重复的元素挑出来。用最快的方式寻找重复的 所以内存没有考虑太多。 a-z 0-9原创 2014-10-23 22:36:24 · 524 阅读 · 0 评论 -
141 被2或者3或者5所整除,求第 1500 个值是多少?
41、微软面试题一个有序数列,序列中的每一个值都能够被 2 或者 3 或者 5 所整除, 1 是这个序列的第一个元素。求第 1500 个值是多少?原创 2014-11-09 16:59:14 · 1079 阅读 · 0 评论 -
84_2 构造一个随机发生器
/*2.已知一随机发生器,产生0的概率是p,产生1的概率是1-p,现在要你构造一个发生器,使得它构造0和1的概率均为 1/2;构造一个发生器,使得它构造1、2、3 的概率均为 1/3; ...,构造一个发生器,使得它构造 1、2、3、...n 的概率均为1/n,要求复杂度最低。思路:由于需要产生1/2,而用1位0,或1位1无法产生等概率,因此,考虑将随机数扩展成2位:00原创 2014-10-23 22:37:19 · 890 阅读 · 0 评论 -
142 两个圆相交,交点是 A1,A2。现在过 A1 点做B1B2,问在什么情况下,B1B2 最长
42、两个圆相交,交点是 A1,A2。现在过 A1 点做一直线与两个圆分别相交另外一点 B1,B2。原创 2014-11-09 21:14:07 · 658 阅读 · 0 评论 -
143 Smith 夫妇召开宴会,握手次数
43、Smith 夫妇召开宴会,并邀请其他 4 对夫妇参加宴会。在宴会上,他们彼此握手,并且满足没有一个人同自己握手,没有两个人握手一次以上,并且夫妻之间不握手。然后 Mr. Smith 问其它客人握手的次数,每个人的答案是不一样的。 求 Mrs Smith 握手的次数原创 2014-11-09 21:16:20 · 1364 阅读 · 0 评论 -
147 金币概率问题(威盛笔试题)
题目:10 个房间里放着随机数量的金币。每个房间只能进入一次,并只能在一个房间中拿金币。一个人采取如下策略:前四个房间只看不拿。随后的房间只要看到比前四个房间都多的金币数,就拿。否则就拿最后一个房间的金币。编程计算这种策略拿到最多金币的概率。编程能够暴力地解出这道题,但是如果没用数学方法分析的话,总觉得这还是个遗留问题。受同学指点,解法如下:设随机放入的原创 2014-11-09 21:24:43 · 1107 阅读 · 0 评论