08 2015 档案
摘要:题目:有1,2,3,......无穷个格子,你从1号格子出发,每次1/2概率向前跳一格,1/2概率向前跳两格,走到格子编号为4的倍数时结束,结束时期望走的步数为____。思路:1、MonteCarlo模拟实验参考代码2、有限状态机的概率转移思想跳一格跳两格都算一步;dp(i,j)表示从格子i到格子j...
阅读全文
摘要:题目:在如下8*6的矩阵中,请计算从A移动到B一共有____种走法。要求每次只能向上或向右移动一格,并且不能经过P。456492568626680702思路:1、组合数学在8*6的矩阵,从左下角A到右上角B,一共需要走12步,其中5步向上,7步向右,因此总的走法一共有C(12,5)=792种但题目规...
阅读全文
摘要:题目:有一块宝石,1级升2级成功率100%,2级升3级成功率80%,3级升4级成功率60%,4级升5级成功率40%,每次升级失败时降回到1级。请问一块1级宝石升到5级平均要多少次?思路:问题:求一块1级宝石升级到5级的期望次数1、蒙特卡洛模拟试验考虑一下期望的定义,所有的可能的次数*出现该次数的概率...
阅读全文
摘要:题目:求一个字符串的最长回文子串思路:1、暴力枚举最容易想到的就是暴力破解,列举每一个子串,然后根据回文的定义判断是不是回文,找到最长的那个。求每一个子串的时间复杂度为O(N^2),判断子串是不是回文的时间复杂度为O(N),所以时间复杂度为O(N^3)。2、动态规划回文字符串的子串也是回文,比如P[...
阅读全文
摘要:题目: 360员工桂最近申请了一个长假,一个人背着包出去自助游了。 路上,他经过了一个小镇,发现小镇的人们都围在一棵树下争吵。桂上前询问情况,得知小镇的人们正缺一个镇长,他们希望能选一个知名又公正的镇长,即,大家希望能选出一个人,所有人都认识他,但同时他不认识镇上除自己以外的其他人(在此,我们默...
阅读全文
摘要:题目:给一个定义:对一个整数,若其中存在相邻两位上的数字相同,则称其为“重复的数”;现给定一个正整数n,求不小于n的最小的非“重复的数”。思路:假设输入的数为n,则令m=n,分别取m的最低两位数字a,b,判断是否a==b,如果是说明是重复的数,那么递归调用n=m+1;考虑特殊情况,ab=99,产生进...
阅读全文
摘要:题目:1、给定一数组,数组中的数字均为int类型,除了一个数出现一次,其他都出现了两次,请找出这个数;2、给定一数组,数组中的数字均为int类型,除了一个数出现一次,其他都出现了三次,请找出这个数;思路:这两道题,最容易想到的方法就是通过hashmap统计或者先排序后遍历的方法,但它们要么需要的空间...
阅读全文
摘要:题目:二叉树中两个结点的最近公共父结点二叉树结点的定义如下:struct TreeNode{ int val; TreeNode *left; TreeNode *right;};思路:前面在剑指Offer中出现了类似的题目,但要求的思路都不太一样,请参考:http://www.cnblogs...
阅读全文
摘要:题目:在一维坐标轴上有n个区间段,求重合区间最长的两个区间段。区间段的数据结构定义如下:struct Interval{ int start; int end;};思路:首先按照区间的左端点即start对n个区间段进行排序;然后从前往后遍历所有区间,比较前后两个区间的右端点即end;假设...
阅读全文
摘要:题目:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路:按照广度优先遍历来遍历二叉树,但是需要按照之字形来打印,意味着:奇数行从左到右,跟BFS的遍历顺序一样,而偶数行从右到左,跟BFS的遍历顺序相反...
阅读全文
摘要:如题,下面直接贴出代码:#include using namespace std;int Partition(int* A,int left,int right){ int key=A[left]; while(left=key) right--; i...
阅读全文
摘要:题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思路:很明显,采用广度优先遍历来解决,但因为需要按行输出,所以需要判断每一层的开始和结束,因此需要两个变量,一个表示当前层尚未打印的结点数,一个表示下一层结点的数目。在线测试:http://www.nowcoder.com/boo...
阅读全文
摘要:题目:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路:对于一棵二叉树,从根结点开始遍历,如果左右子结点有一个为NULL,那么肯定不是对称二叉树;如果左右子结点均不为空,但不相等,那么肯定不是对称二叉树;如果左右子结点均不为空且相等,...
阅读全文
摘要:题目:Given any positive integer N, you are supposed to find all of its prime factors, and write them in the format N = p1^k1 * p2^k2 *...*pm^km.输入描述:Eac...
阅读全文
摘要:题目:把一个整数数组中重复的数字去掉,并输出剩下的不重复的元素。(要求不能开辟新空间)思路:先排序,然后遍历数组比较,详见代码代码:#include #include using namespace std;int cmp(const void* a,const void* b){ retur...
阅读全文
摘要:题目:假设数组a有n个元素,元素的取值范围为1~n,如何判定数组是否存在重复元素?思路:方法1:数组排序,比较相邻元素是否相等;时间复杂度:O(nlogn),空间复杂度:O(1)方法2:使用bitmap(位图),定义长度为N/8的char数组,每个bit表示对应数字是否出现过。遍历数组,使用bitm...
阅读全文
摘要:题目:在排序数组中,找出给定数字出现的次数思路:既然出现排序数组,很容易想到二分查找,时间复杂度为O(logn);先通过二分查找找到最左边出现该数字的下标left(如果没找到,则返回-1),然后通过二分查找找到最右边出现该数字的下表right(如果没找到,则返回-1),然后right-left+1就...
阅读全文
摘要:题目:题目1:小冯和小崔都去参加一个 workshop,这个 workshop 从晚上 6 点到 8 点。但是由于小冯 和小崔都很忙,所以都只能参加部分会议。小冯参加一个小时,而小崔会参加半个小时。那 么小冯和小崔在 works 遇到的概率有多大?题目2:两个人约好12:00-13:00之间见面,先...
阅读全文
摘要:题目:百度全体员工玩分组游戏,前面五分钟大家分头找队友,并将每个人找到的队友信息汇报给主持人,如果A和B是队友,B和C是队友,那么A和C也是队友;接着主持人不断地随机抽取两个人,希望判断二者是否为队友。请设计一个计算机程序辅助主持人判断两个人是否为队友,说明程序的关键算法,不需要代码实现。例如:,,...
阅读全文
摘要:题目:给定以下二叉树:struct node{node *left, *right;int value;};要求编写函数 node* foo(node *node, unsigned int m, unsigned int k);输出以 node 为根的二叉树第 m 层的第 k 个节点值.(leve...
阅读全文
摘要:(文章出处不详,转自:http://blog.csdn.net/hairetz/article/details/4137000)C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“...
阅读全文
摘要:这个来自华为企业技术交流社区的关于计算机网络的资料特别棒,推荐给大家!以下是系列文章的链接:【数通大讲坛 01 】利用TCP/IP模型理解数据通信过程http://support.huawei.com/ecommunity/bbs/10217323.html【数通大讲坛 02】IP子网划分(VLSM...
阅读全文
摘要:题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路:考虑中序遍历的过程,如果当前结点存在右子节点,那么当前结点的下一个结点应该为该右子树的最左边的结点;如果当前结点没有右子节点,那么如果当前结点的父结点p-...
阅读全文
摘要:题目:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思路:由于头结点有可能被删除,因此需要创建新的头结点pNew;遍历链表,每遍历一个结点pCur,且pCur!=NULL,做以...
阅读全文
摘要:题目:一个链表中包含环,请找出该链表的环的入口结点。思路:1、哈希表遍历整个链表,并将链表结点存入哈希表中(这里我们使用容器set),如果遍历到某个链表结点已经在set中,那么该点即为环的入口结点;2、两个指针如果链表存在环,那么计算出环的长度n,然后准备两个指针pSlow,pFast,pFast先...
阅读全文
摘要:问题:Given an array of N integer, find the length of the longest increasing subsequence.For example, given [1,-5,4,5,10,-1,-5,7], the longest increasing...
阅读全文
摘要:题目:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。思路:字符流:像流水一样的字符,一去不复返,意味着只能访问一次。方法1:将字符流保...
阅读全文
摘要:题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。思路:表示数值的字符串遵循如下模式:[sign]...
阅读全文
摘要:题目:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹...
阅读全文
摘要:题目:求二叉树两个结点的最远距离。二叉树定义如下:class TreeNode{public: int val; TreeNode* left; TreeNode* right; TreeNode(int x):val(x),left(NULL),right(NULL){}}...
阅读全文
摘要:题目:求1到1亿间的质数或素数思路:什么是质数?质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。(来自百度百科)方法1:遍历1到1亿间的所有数,然后逐个判断是否为...
阅读全文
摘要:Given a list of numbers, find the number of tuples of size N that add to S.for example in the list (10,5,-1,3,4,-6), the tuple of size 4 (-1,3,4,-6) a...
阅读全文
摘要:Given an array of strings, return all groups of strings that are anagrams.Note: All inputs will be in lower-case.题目:给一组字符串,返回所有满足Anagrams(回文构词法)的字符串;A...
阅读全文