随笔分类 -  面试题

摘要:题目:现在有两个排好序的整数数组,a[N]和b[N],要求写一个函数,功能为返回两个数组中第N大数和第N+1大数的中间值,即求解两者的和除以2。函数原型:double getMedian( int a[], int b[] );下面,我们先来分析一个类似的问题,假设a和b都是升序的,分别有n1和n2个元素,求两个数组合并后第k大元素值。分别取两个数组中间索引的数,a[x]和b[y],比较两个数的大小:if( a[x] <= a[y] )——————————————————————————————————————————————————————————————如果k <= x+y+1 阅读全文
posted @ 2011-10-18 20:14 qi09 阅读(7351) 评论(1) 推荐(1)
摘要:题目:写一个程序, 要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数。如:100个1是一个组合,5个1加19个5是一个组合。。。。 请用C++语言写。答案:最容易想到的算法是:设x是1的个数,y是2的个数,z是5的个数,number是组合数注意到0<=x<=100,0<=y<=50,0<=z=20,所以可以编程为:number=0;for (x=0; x<=100; x++)for (y=0; y<=50; y++)for (z=0; z<=20; z++)if ((x+2*y+5*z)==100)number++;cout& 阅读全文
posted @ 2011-05-25 19:45 qi09 阅读(2594) 评论(1) 推荐(1)
摘要:题目:在二元树中找出和为某一值的所有路径输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22 和如下二元树 10 / \ 5 12 / \ 4 7则打印出两条路径:10, 12 和10, 5, 7。思路:1、当访问到某一节点时,把该结点的值添加到当前和变量,且把该结点压入栈中。2、若结点为叶子结点,且当前和变量==期望的和,则打印栈中的结点值,即为所需的路径。3、若结点不是叶子结点,继续访问它的左孩子结点,访问它的右孩子结点。4、删除该结点。包括从当前和变量中减去结点值,从栈中弹出结点值。此时,已回到父结 阅读全文
posted @ 2011-05-24 15:59 qi09 阅读(7017) 评论(1) 推荐(0)