
面试算法
文章平均质量分 61
Vast_Sea
这个作者很懒,什么都没留下…
展开
-
圆圈中最后剩下的数字[算法]
From: http://zhedahht.blog.163.com/blog/static/2541117420072250322938/题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。转载 2012-11-14 09:21:37 · 863 阅读 · 0 评论 -
飞机加油问题
From: http://blog.youkuaiyun.com/huangkangying/article/details/6860288条件:(1)每个飞机只有一个油箱,(2)飞机之间可以相互加油(注意是相互,没有加油机)(3)一箱油可供一架飞机绕地球飞半圈,问题:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同一机场起飞,而且必转载 2012-11-13 15:31:20 · 917 阅读 · 0 评论 -
用两个栈实现队列[数据结构]
From: http://zhedahht.blog.163.com/blog/static/2541117420073293950662/题目:某队列的声明如下:templatetypename T>class CQueue{public: CQueue() {} ~CQueue() {} void appendTai转载 2012-11-14 10:06:46 · 853 阅读 · 0 评论 -
子数组的最大和[算法]
From: http://zhedahht.blog.163.com/blog/static/254111742007219147591/题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5转载 2012-11-13 21:27:52 · 560 阅读 · 0 评论 -
在9 个点上画10 条直线,要求每条直线上至少有三个点
转载 2012-11-13 14:30:02 · 1142 阅读 · 0 评论 -
二叉树两结点的最低共同父结点[数据结构]
题目:二叉树的结点定义如下:struct TreeNode{ int m_nvalue; TreeNode* m_pLeft; TreeNode* m_pRight;};输入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点。分析:求数中两个结点的最低共同结点是面试中经常出现的一个问题。这个问题至少有两个变种。第一转载 2012-11-12 09:53:15 · 626 阅读 · 0 评论 -
数组中出现次数超过一半的数字[算法]
From: http://zhedahht.blog.163.com/blog/static/25411174201085114733349/题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。分析:这是一道广为流传的面试题,包括百度、微软和Google在内的多家公司都曾经采用过这个题目。要几十分钟的时间里很好地解答这道题,除了较好的编程能力之外,还需要较快转载 2012-11-12 09:34:18 · 1072 阅读 · 0 评论 -
对称子字符串的最大长度[算法]
From: http://zhedahht.blog.163.com/blog/static/25411174201063105120425/题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。分析:可能很多人都写过判断一个字符串是不是对称的函数,这个题目可以看成是该函数的加强转载 2012-11-12 09:11:40 · 781 阅读 · 0 评论 -
设计一个类,我们只能生成该类的一个实例
题目:设计一个类,我们只能生成该类的一个实例。分析:只能生成一个实例的类是实现了Singleton 模式的类型。转载 2012-11-12 08:55:22 · 2028 阅读 · 1 评论 -
数值的整数次方
折半乘法.题目:实现函数double Power(double base, int exponent),求base 的exponent 次方。不需要考虑溢出。分析:这是一道看起来很简单的问题。可能有不少的人在看到题目后30 秒写出如下的代码:double Power(double base, int exponent){double result = 1.0;转载 2012-11-12 08:51:07 · 531 阅读 · 0 评论 -
给出一个函数来输出一个字符串的所有排列。
ANSWER 简单的回溯就可以实现了。当然排列的产生也有很多种算法,去看看组合数学,还有逆序生成排列和一些不需要递归生成排列的方法。印象中Knuth 的第一卷里面深入讲了排列的生成。这些算法的理解需要一定的数学功底,也需要一定的灵感,有兴趣最好看看。转载 2012-11-12 08:44:11 · 2377 阅读 · 0 评论 -
边界交叉的字符串问题
85.又见字符串的问题1.给出一个函数来复制两个字符串A 和B。字符串A 的后几个字节和字符串B 的前几个字节重叠。分析:记住,这种题目往往就是考你对边界的考虑情况。ANSWERSpecial case of memmove.转载 2012-11-12 21:49:54 · 713 阅读 · 0 评论 -
一些常见的概率生成器的题目
已知一随机发生器,产生0 的概率是p,产生1 的概率是1-p,现在要你构造一个发生器,使得它构造0 和1 的概率均为1/2;构造一个发生器,使得它构造1、2、3 的概率均为1/3;...,构造一个发生器,使得它构造1、2、3、...n 的概率均为1/n,要求复杂度最低。ANSWERRun rand() twice, we got 00, 01, 10 or 11. If it’s转载 2012-11-12 20:36:29 · 675 阅读 · 0 评论 -
毒酒问题
一道著名的毒酒问题有1000 桶酒,其中1 桶有毒。而一旦吃了,毒性会在1 周后发作。现在我们用小老鼠做实验,要在1 周内找出那桶毒酒,问最少需要多少老鼠。10只老鼠按顺序排好每桶酒按照编号转换成二进制,给相应位置上是1的老鼠喝。最后按死掉的老鼠是哪几只,然后排成二进制,再转成十进制就是第几桶酒。比如:第70桶酒,70转换成二进制就是0001000110,那么就给第转载 2012-11-13 09:33:49 · 1036 阅读 · 0 评论 -
Suffix Trees 求两个串中的第一个最长子串
求两个串中的第一个最长子串(神州数码以前试题)。如"abractyeyt","dgdsaeactyey"的最大子串为"actyet"。ANSWERUse suffix tree. The longest common substring is the longest prefix of the suffixes.O(n) to build suffix tree. O(n) to转载 2012-11-13 09:02:27 · 2860 阅读 · 0 评论 -
缺省参数的值是在编译的时候 确定
问题(16):运行如下的C++代码,输出是什么?class A{public: virtual void Fun(int number = 10) { std::cout "A::Fun with number " }}; class B:public A{public: virtual v转载 2012-11-13 16:08:29 · 762 阅读 · 0 评论 -
字符串的组合[算法]
1题目:输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。分析:在本系列博客的第28题《字符串的排列》中,我们详细讨论了如何用递归的思路求字符串的排列。同样,本题也可以用递归的思路来求字符串的组合。2题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b转载 2012-11-13 19:30:36 · 508 阅读 · 0 评论 -
判断二叉树是不是平衡[数据结构]
From: http://zhedahht.blog.163.com/blog/static/25411174201142733927831/题目:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。例如下图中的二叉树就是一棵平衡二叉树:在本系列博客的第27题,我们曾介绍过如何求二叉树的深度。有了求转载 2012-11-13 19:39:12 · 682 阅读 · 0 评论 -
把二元查找树转变成排序的双向链表[数据结构]
From: http://zhedahht.blog.163.com/blog/static/254111742007127104759245/题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 比如将二元查找树 10转载 2012-11-13 20:56:17 · 486 阅读 · 0 评论 -
不用+、-、×、÷做加法[算法]
From: http://zhedahht.blog.163.com/blog/static/254111742011125100605/题目:写一个函数,求两个整数的之和,要求在函数体内不得使用+、-、×、÷。分析:这又是一道考察发散思维的很有意思的题目。当我们习以为常的东西被限制使用的时候,如何突破常规去思考,就是解决这个问题的关键所在。看到的这个题目,我的第一反应是转载 2012-11-13 15:51:21 · 500 阅读 · 0 评论 -
不会的题目
http://blog.youkuaiyun.com/ludengljc/article/details/30236171.多人排成一个队列,我们认为从低到高是正确的序列,但是总有部分人不遵守秩序。如果说,前面的人比后面的人高(两人身高一样认为是合适的), 那么我们就认为这两个人是一对“捣乱分子”,比如说,现在存在一个序列:176, 178, 180, 170, 171转载 2012-11-13 10:28:16 · 903 阅读 · 0 评论 -
在数组中 找左边都比其小右边都比其大的元素
一个int 数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。ANSWERSort the array to another array, compare it with the original array, all a[i] = b[i] are answers.我认为只转载 2012-11-12 16:21:01 · 3671 阅读 · 1 评论 -
最长公共子串[算法]
From: http://zhedahht.blog.163.com/blog/static/254111742007376431815/题目:如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串。注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中。请编写一个函数,输入两个字符串,求它们的最长公共子串,并打印出最长公共子串。转载 2012-11-14 10:38:15 · 1723 阅读 · 0 评论 -
二元树中和为某一值的所有路径[数据结构]
From: http://zhedahht.blog.163.com/blog/static/254111742007228357325/题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22和如下二元树转载 2012-11-13 21:58:05 · 586 阅读 · 0 评论 -
设计包含min函数的栈[数据结构]
From: http://zhedahht.blog.163.com/blog/static/25411174200712895228171/题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。分析:这是去年google的一道面试题。我看到这道题目时,第一反应就是每次push一个新元素时,将转载 2012-11-13 21:26:07 · 499 阅读 · 0 评论 -
数对之差的最大值[算法]
From: http://zhedahht.blog.163.com/blog/static/2541117420116135376632/题目:在数组中,数字减去它右边的数字得到一个数对之差。求所有数对之差的最大值。例如在数组{2, 4, 1, 16, 7, 5, 11, 9}中,数对之差的最大值是11,是16减去5的结果。分析:看到这个题目,很多人的第一反应是找到这个数转载 2012-11-13 20:05:42 · 1272 阅读 · 0 评论 -
函数将字符串中的字符'*'移到串的前部分
2005 年11 月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移,但不能改变非'*'字符的先后顺序,函数返回串中字符'*'的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函数并返回值为5。(要求使用尽量少的时间和辅助空间)ANSWERIt’s like partition in quick sort转载 2012-11-13 15:29:07 · 3885 阅读 · 0 评论 -
一个岔路口分别通向诚实国和说谎国
来了两个人,已知一个是诚实国的,另一个是说谎国的。诚实国永远说实话,说谎国永远说谎话。现在你要去说谎国,但不知道应该走哪条路,需要问这两个人。请问应该怎么问?(20 秒-2 分钟)ANSWERSeems there are too many answers.I will pick anyone to ask: how to get to your country? Then p转载 2012-11-13 11:09:41 · 4196 阅读 · 0 评论 -
O(logn)求Fibonacci数列[算法]
From: http://zhedahht.blog.163.com/blog/static/25411174200722991933440/ 题目:定义Fibonacci数列如下: / 0 n=0f(n)= 1 n=1 \ f(n-1)+f转载 2012-11-14 09:43:13 · 1103 阅读 · 0 评论 -
第一个只出现一次的字符[算法]
From: http://zhedahht.blog.163.com/blog/static/25411174200722191722430/题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 分析:这道题是2006年google的一道笔试题。看到这道题时,最直观的想法是从头开始扫描这个字符串中的每个字符。当访问到某字符时拿这个字符转载 2012-11-13 23:50:30 · 539 阅读 · 0 评论 -
从上往下遍历二元树[数据结构]
From: http://zhedahht.blog.163.com/blog/static/2541117420072199173643/题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。 例如输入 8 / \ 6 10 /\ /\ 5 7 9 11输出8 6转载 2012-11-13 23:37:15 · 950 阅读 · 1 评论 -
二元查找树的后序遍历结果[数据结构]
From: http://zhedahht.blog.163.com/blog/static/25411174200725319627/题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 /转载 2012-11-13 22:43:24 · 564 阅读 · 0 评论 -
12个高矮不同的人,排成两排/Catalan数
作者:baihacker 来源:http://hi.baidu.com/feixue http://hi.youkuaiyun.com/baihacker 问题描述: 12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种? 还有一道和这个题相关的题:http://blog.youkuaiyun.com/jiyanfeng1/article/d转载 2012-11-12 11:08:30 · 3283 阅读 · 0 评论 -
给定单链表(head),如果有环的话请返回从头结点进入环的第一个节点
...................................................................编写实现链表排序的一种算法。说明为什么你会选择用这样的方法?转载 2012-11-12 10:04:47 · 1837 阅读 · 0 评论 -
寻找丑字
From: http://www.cnblogs.com/mingzi/archive/2009/08/04/1538491.html题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。分析:这是一道在网络上广为流传的面试题转载 2012-11-10 11:19:19 · 461 阅读 · 0 评论 -
求10000以内的所有素数
From: http://blog.163.com/bqj123@126/blog/static/2835133420109310281705/素数是除了1和它本身之外再不能被其他数整除的自然数。由于找不到一个通项公式来表示所有的素数,所以对于数学家来说,素数一直是一个未解之谜。像著名的哥德巴赫猜想、孪生素数猜想,几百年来不知吸引了世界上多少优秀的数学家。尽管他们苦心钻研,呕心沥血转载 2012-11-05 21:32:32 · 10730 阅读 · 1 评论 -
快速模式匹配算法(KMP)
From: http://www.cnblogs.com/BeyondAnyTime/archive/2012/07/09/2583133.html1.模式匹配 模式匹配的模型大概是这样的:给定两个字符串变量S和P,其中S成为目标串,其中包含n个字符,P称为模式串,包含m个字符,其中m3.快速模式匹配算法(KMP) 朴素的模式匹配效率不高的主要原因是进行转载 2012-11-05 21:00:02 · 1170 阅读 · 0 评论 -
问题
1 写一个双链表2 写个is-a和has-a。3void *p的问题 //不能++4 hash算法5 一个4*4的格子,填入1~15 然后给个目标状态,怎样去搜索。6 平衡二叉树平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右原创 2012-11-05 22:36:35 · 455 阅读 · 0 评论 -
Autodesk笔试题收集
1.What is virtual function ?what is vtable used for?虚函数用来表现基类和派生类的成员函数之间的一种关系. 虚函数的定义在基类中进行,在需要定义为虚函数的成员函数的声明前冠以关键字 virtual. 基类中的某个成员函数被声明为虚函数后,此虚函数就可以在一个或多个派生类中被重新定义. 在派生类中重新定义时,其函数原型,包括返回类型,转载 2012-11-05 22:36:22 · 2526 阅读 · 0 评论 -
迪科斯彻算法 Dijkstra算法
From: http://zh.wikipedia.org/zh-cn/Dijkstra%E7%AE%97%E6%B3%95戴克斯特拉算法(英语:Dijkstra's algorithm)是由荷兰计算机科学家艾兹赫尔·戴克斯特拉(Edsger Wybe Dijkstra)发明的。算法解决的是有向图中单个源点到其他顶点的最短路径问题。举例来说,如果图中的顶点表示城市,而边上的权重转载 2012-11-05 21:21:16 · 1360 阅读 · 0 评论