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
面试题精选
程序员
面试题精选
(38):2008百度校园招聘的一道笔试题
题目大意如下:一排N(最大1M)个正整数+1递增,乱序排列,第一个不是最小的,把它换成-1,最小数为a且未知求第一个被-1替换掉的数原来的值,并分析算法复杂度。解题思路:一般稍微有点算法知识的人想想就会很容易给出以下解法:设Sn=a+(a+1)+(a+2)+.........+(a+n-1)=na+n(n-1)/2扫一次数组即可找到最小值a,时间复杂度O(n)设S=修改第一项后所有数组项之和,求和
yysdsyl
·
2007-11-14 21:00
算法
面试
百度
招聘
程序员
面试题精选
(37):判断字符串是否是回文字符串或者是否含有回文字符子串
题目来自BMYBBS算法版,原题如下:不仅能判断规则的中心对称,如123454321,还要能判断如123456547890中的45654的不规则部分中心对称算法思想从第一个字符开始,逐个扫描,对每一个字符,查找下一个相同字符,判断这两个字符之间的字符串是否回文。时间复杂度O(n^3),所以说是笨笨解,师弟说可以做到O(n^2)...算法实现/*===========================
yysdsyl
·
2007-11-14 21:00
算法
面试
vc++
bbs
程序员
面试题精选
(36):找出数组中唯一的重复元素
1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次。每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空间,能否设计一个算法实现?将1001个元素相加减去1,2,3,……1000数列的和,得到的差即为重复的元素。 int Find(int * a) { int i;//变量 for (i = 0 ;i<=1000;i++) { a[100
yysdsyl
·
2007-11-07 15:00
c
算法
面试
存储
扩展
程序员
面试题精选
(35):一次遍历链表求中间节点位置
思路:声明两指针p和q,p每往后移动两节点,q往后移动一个节点,当p->next==NULL时,q便是中间节点的位置。 知道思路后,实现就比较简单了,在此不给出代码。
yysdsyl
·
2007-11-04 21:00
面试
null
程序员
面试题精选
(34):c++写不能被继承的类
题目:用C++设计一个不能被继承的类。分析:这是Adobe公司2007年校园招聘的最新笔试题。这道题除了考察应聘者的C++基本功底外,还能考察反应能力,是一道很好的题目。在Java中定义了关键字final,被final修饰的类不能被继承。但在C++中没有final这个关键字,要实现这个要求还是需要花费一些精力。首先想到的是在C++中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会
yysdsyl
·
2007-11-02 12:00
C++
面试
招聘
delete
Class
Adobe
程序员
面试题精选
(33):两单向链表相交问题
题目:给出两个单向链表的头指针,比如h1、h2,判断链表是否相交,如果不相交返回NULL;如果相交,返回指向第一个相交节点的指针;时间复杂度控制在O(n)的前提下。 这道题首先要弄明白的是,两单向链表相交的话,一定是Y型相交,不可能出现X型,弄清楚这点后接下来的工作就是:(1)先找到h1,h2的最后一个节点p1和p2,同时记录节点数量a,b;(2)判断最后一个节点是否相同;如果不相同则没相交;如果
yysdsyl
·
2007-10-28 15:00
工作
面试
null
程序员
面试题精选
(32):金币概率问题(威盛笔试题)
题目: 10个房间里放着随机数量的金币。每个房间只能进入一次,并只能在一个房间中拿金币。一个人采取如下策略:前四个房间只看不拿。随后的房间只要看到比前四个房间都多的金币数,就拿。否则就拿最后一个房间的金币。 编程计算这种策略拿到最多金币的概率。 intgenrand(inta,intb){ returnrand()%(b-a+1)+a;}voidgennum(int*a,intsize){ for
yysdsyl
·
2007-10-27 21:00
编程
面试
程序员
面试题精选
(31):从尾到头遍历链表
题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:structListNode{ int m_nKey; ListNode*m_pNext;};分析:这是一道很有意思的面试题。该题以及它的变体经常出现在各大公司的面试、笔试题中。看到这道题后,第一反应是从头到尾输出比较简单。于是很自然地想到把链表中链接结点的指针反转过来,改变链表的方向。然后就可
yysdsyl
·
2007-10-24 21:00
算法
面试
list
struct
null
input
程序员
面试题精选
(30):异常安全的赋值运算符重载函数
题目:类CMyString的声明如下:classCMyString{public: CMyString(char*pData=NULL); CMyString(constCMyString&str); ~CMyString(void); CMyString&operator=(constCMyString&str);private: char*m_pData
yysdsyl
·
2007-10-24 17:00
C++
面试
null
delete
Class
程序员
面试题精选
(29):调整数组顺序使奇数位于偶数前面
题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。分析:如果不考虑时间复杂度,最简单的思路应该是从头扫描这个数组,每碰到一个偶数时,拿出这个数字,并把位于这个数字后面的所有数字往前挪动一位。挪完之后在数组的末尾有一个空位,这时把该偶数放入这个空位。由于碰到一个偶数,需要移动O(n)个数字,因此总的时间复杂度是O(n2
yysdsyl
·
2007-10-24 17:00
算法
面试
null
Integer
input
functor
程序员
面试题精选
(28):字符串的排列
题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。分析:这是一道很好的考查对递归理解的编程题,因此在过去一年中频繁出现在各大公司的面试、笔试题中。我们以三个字符abc为例来分析一下求字符串排列的过程。首先我们固定第一个字符a,求后面两个字符bc的排列。当两个字符bc的排列求好之后
yysdsyl
·
2007-10-24 17:00
面试
String
input
扩展
permutation
recursion
程序员
面试题精选
(27):二元树的深度
题目:输入一棵二元树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。例如:输入二元树: 10 / /
yysdsyl
·
2007-10-24 16:00
struct
面试
tree
input
output
程序员
面试题精选
(26):和为n连续正数序列
题目:输入一个正数n,输出所有和为n连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。分析:这是网易的一道面试题。这道题和本面试题系列的第10题有些类似。我们用两个数small和big分别表示序列的最小值和最大值。首先把small初始化为1,big初始化为2。如果从small到big的序列的和大于n的话,我们向右移动small
yysdsyl
·
2007-10-24 16:00
程序员
面试题精选
(25):在从1到n的正数中1出现的次数
题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,1一共出现了5次。分析:这是一道广为流传的google面试题。用最直观的方法求解并不是很难,但遗憾的是效率不是很高;而要得出一个效率较高的算法,需要比较强的分析能力,并不是件很容易的事情。当然,google的面试题中简单的也没有几道。首先我们来看最直观的方法,
yysdsyl
·
2007-10-24 16:00
面试
String
Google
Integer
input
output
程序员
面试题精选
(24):栈的push、pop序列
题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。因为可以有如下的push和pop序列:push1,push2,push3,push4,pop,push5,pop,pop,pop,pop,这样得
yysdsyl
·
2007-10-24 16:00
数据结构
面试
null
Integer
input
output
程序员
面试题精选
(23):跳台阶问题
题目:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度。分析:这道题最近经常出现,包括MicroStrategy等比较重视算法的公司都曾先后选用过个这道题作为面试题或者笔试题。首先我们考虑最简单的情况。如果只有1级台阶,那显然只有一种跳法。如果有2级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1级;另外一种就是一次跳2级。现在我们再来讨论一般情
yysdsyl
·
2007-10-24 16:00
程序员
面试题精选
(22):整数的二进制表示中1的个数
题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。分析:这是一道很基本的考查位运算的面试题。包括微软在内的很多公司都曾采用过这道题。一个很基本的想法是,我们先判断整数的最右边一位是不是1。接着把整数右移一位,原来处于右边第二位的数字现在被移到第一位了,再判断是不是1。这样每次移动一位,直到这个整数变成0为止。现在的问题变成怎样判断
yysdsyl
·
2007-10-24 16:00
编程
面试
Integer
扩展
微软
程序员
面试题精选
(21):左旋转字符串
题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。分析:如果不考虑时间和空间复杂度的限制,最简单的方法莫过于把这道题看成是把字符串分成前后两部分,通过旋转操作把这两个部分交换位置。于是我们可以新开辟一块长度为n+1的辅助空间
yysdsyl
·
2007-10-24 16:00
程序员
面试题精选
(20):最长公共子串
题目:如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串。注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中。请编写一个函数,输入两个字符串,求它们的最长公共子串,并打印出最长公共子串。例如:输入两个字符串BDCABA和ABCBDAB,字符串BCBA和BDAB都是是它们的最长公共子串,则输出它们的长度4,并打印任意一个子串。分析:求最长公共
yysdsyl
·
2007-10-24 16:00
c
算法
面试
String
Matrix
generation
程序员
面试题精选
(19):反转链表
题目:输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。链表结点定义如下:structListNode{ int m_nKey; ListNode*m_pNext;};分析:这是一道广为流传的微软面试题。由于这道题能够很好的反应出程序员思维是否严密,在微软之后已经有很多公司在面试时采用了这道题。为了正确地反转一个链表,需要调整指针的指向。与指针操作相关代码总是容
yysdsyl
·
2007-10-24 16:00
面试
list
struct
null
微软
output
程序员
面试题精选
(18):用两个栈实现队列
题目:某队列的声明如下:templateclassCQueue{public: CQueue(){} ~CQueue(){} voidappendTail(constT&node); //appendaelementtotail voiddeleteHead(); //removeaelementfromhead private:
yysdsyl
·
2007-10-24 16:00
c
面试
delete
存储
Class
扩展
程序员
面试题精选
(17):把字符串转换成整数
开发经常遇到的。如果你有兴趣,可以帮忙微软扩展一下ListView在用ListView时,想删除选择项,单选的删除很简单这里讲一下多选的首先我们响应的事件为ListView.KeyDown因为我们要检查的是否按下delete键代码如下: /// ///key“Delete”ispressed,andthenDeleteAllofListViewSelectedItems /
yysdsyl
·
2007-10-24 15:00
面试
ListView
object
null
delete
扩展
程序员
面试题精选
(16):O(logn)求Fibonacci数列
题目:定义Fibonacci数列如下: / 0 n=0f(n)= 1 n=1 / f(n-1)+f(n-2) n=2输入n,用最快的方法求该数列的第n项。分析:在很多C语言教科书中讲到递归函数的时候,都会用Fibonacci作为例子。因此很多程序员对这道题的递归
yysdsyl
·
2007-10-24 15:00
c
面试
struct
input
语言
Matrix
程序员
面试题精选
(15):含有指针成员的类的拷贝
题目:下面是一个数组类的声明与实现。请分析这个类有什么问题,并针对存在的问题提出几种解决方案。templateclassArray{public: Array(unsignedarraySize):data(0),size(arraySize) { if(size>0) data=newT[size]; } ~Ar
yysdsyl
·
2007-10-24 15:00
面试
null
delete
存储
Class
编译器
程序员
面试题精选
(14):圆圈中最后剩下的数字
题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。分析:既然题目有一个数字圆圈,很自然的想法是我们用一个数据结构来模拟这个圆圈。在常用的数据结构中,我们很容易想到用环形列表。我们可以创建一个总共有m个数字的
yysdsyl
·
2007-10-24 14:00
数据结构
面试
list
iterator
input
output
程序员
面试题精选
(13):第一个只出现一次的字符
题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。分析:这道题是2006年google的一道笔试题。看到这道题时,最直观的想法是从头开始扫描这个字符串中的每个字符。当访问到某字符时拿这个字符和后面的每个字符相比较,如果在后面没有发现重复的字符,则该字符就是只出现一次的字符。如果字符串有n个字符,每个字符可能与后面的O(n)个字符相比较,因此这种思路时间复杂度是O(
yysdsyl
·
2007-10-24 14:00
数据结构
面试
String
Google
input
output
程序员
面试题精选
(12):从上往下遍历二元树
题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。例如输入 8 / / 6 10 // // 5 7 9 11输出8 6 10 5 7 9 11。分析:这曾是微软的一道面试题。这道题实质上是要求遍历一棵二元树,只不过不是我们熟悉的前序、中序或者后序遍历。我们从树的根结点开始分析。自然先应该打印根结点8,同时为了下次能够打印8的
yysdsyl
·
2007-10-24 14:00
面试
struct
tree
input
insert
iostream
程序员
面试题精选
(11):求二元查找树的镜像
题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。例如输入: 8 / / 6 10 // //5 7 9 11输出: 8 / / 10 6 // //11 9 7 5定义二元查找树的结点为:structBSTreeNode//anodeinthe
yysdsyl
·
2007-10-24 14:00
程序员
面试题精选
(10):在排序数组中查找和为给定值的两个数字
题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。分析:如果我们不考虑时间复杂度,最简单想法的莫过去先在数组中固定一个数字,再依次判断数组中剩下的n-1个数字与它的和是不是等于输入的
yysdsyl
·
2007-10-24 14:00
面试
less
input
扩展
output
Numbers
程序员
面试题精选
(9):查找链表中倒数第k个结点
题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。链表结点定义如下:structListNode{ int m_nKey; ListNode*m_pNext;};分析:为了得到倒数第k个结点,很自然的想法是先走到链表的尾端,再从尾端回溯k步。可是输入的是单向链表,只有从前往后的指针而没有从后往前的指针。因此我们需要打开我们的思路。既然
yysdsyl
·
2007-10-24 14:00
面试
list
null
less
output
distance
程序员
面试题精选
(8):求1+2+...+n
题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。分析:这道题没有多少实际意义,因为在软件开发中不会有这么变态的限制。但这道题却能有效地考查发散思维能力,而发散思维能力能反映出对编程相关技术理解的深刻程度。通常求1+2+…+n除了用公式n(n+1)/2之外,无外乎循环和递归两种思路。由于已经明确限制for和
yysdsyl
·
2007-10-24 14:00
程序员
面试题精选
(6):判断整数序列是不是二元查找树的后序遍历结果
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / / 6 10 // // 5 7 9 11因此返回true。如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。分
yysdsyl
·
2007-10-24 14:00
程序员
面试题精选
(5):查找最小的k个元素
题目:输入n个整数,输出其中最小的k个。例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。分析:这道题最简单的思路莫过于把输入的n个整数排序,这样排在最前面的k个数就是最小的k个数。只是这种思路的时间复杂度为O(nlogn)。我们试着寻找更快的解决思路。我们可以开辟一个长度为k的数组。每次从输入的n个整数中读入一个数。如果数组中已经插入的元素少于k个,则将读入的整
yysdsyl
·
2007-10-24 14:00
数据结构
面试
vector
iterator
iostream
Numbers
程序员
面试题精选
(4):在二元树中找出和为某一值的所有路径
题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22和如下二元树 10 / /
yysdsyl
·
2007-10-24 14:00
数据结构
vector
面试
tree
iterator
Path
程序员
面试题精选
(3):求子数组的最大和
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1,-2,3,10,-4,7,2,-5,和最大的子数组为3,10,-4,7,2,因此输出为该子数组的和18。分析:本题最初为2005年浙江大学计算机系的考研题的最后一道程序设计题,在2006年里包括google在内的很多知
yysdsyl
·
2007-10-24 13:00
面试
网络
Google
null
input
程序员
面试题精选
(2):设计包含min函数的栈
题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。分析:这是去年google的一道面试题。我看到这道题目时,第一反应就是每次push一个新元素时,将栈里所有逆序元素排序。这样栈顶元素将是最小元素。但由于不能保证最后push进栈的元素最先出栈,这种思路设计的数据结构已经不是一个栈了。在栈里添加一个成员变量存放最小元素(或
yysdsyl
·
2007-10-24 13:00
数据结构
工作
面试
Google
Class
insert
程序员
面试题精选
(1):把二元查找树转变成排序的双向链表
题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。比如将二元查找树 10 / / 6 1
yysdsyl
·
2007-10-24 13:00
上一页
7
8
9
10
11
12
13
14
下一页
按字母分类:
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
其他