文章分类 -  笔试面试基础

摘要:假设变量x和n是两个正整数,我们知道x/n这个表达式的结果要取Floor,例如x是17,n是4,则结果是4。如果希望结果取Ceiling应该怎么写表达式呢?例如x是17,n是4,则结果是5;x是16,n是4,则结果是4。 一道很基础的题,答案是:(x+n-1)/n 下面给出证明: 1. 设x=kn,k为整数,即x为n的整数倍。则(x+n-1)/n=(kn+n-1)/n=((k+1)n-1)/... 阅读全文
posted @ 2009-12-21 17:17 Chris Wang 阅读(674) 评论(0) 推荐(0)
摘要:问题:有N个人围成一圈,顺序排号。从第一个人开始报数(从1~~3报数),凡报到3的退出圈子,问最后留下的人原来是排在第几号? 请编程实现之。 思路: (1)用一个循环队列array(用数组或者链表模拟循环队列都可)去存放这个n个人组成的圈子. (2)然后依次开始报数,用变量currentCallNum表示当前报数(根据题意,从1开始),用index表示数组里面每个元素的下标(下标从0开始) (3)... 阅读全文
posted @ 2009-12-07 13:56 Chris Wang 阅读(289) 评论(0) 推荐(0)
摘要:思路:(1)从文件中读取内容 转化成字符数组 (2)检查内容是否符合要求 (3)计算字母出现频率 (4)找出出现频率最高的前N个字母 (5)打印这些字母 但是要注意一些异常情况的判断: (1)内容是否只包含英文字母和空格? (2)如果文件中没有包含字母,该如何处理? (3)如果给出的字符里面 只有三个字母如"abc",但是确要找出次数出现最多的前10个字母,该如何处理?具体Java代码如下: 阅读全文
posted @ 2009-11-27 13:19 Chris Wang 阅读(5257) 评论(1) 推荐(0)
摘要:思路:首先定义一个方法,传入参数是要搜索的文件夹和要匹配的末尾的字符串,此题我们传入abc (1)首先查找传入的文件夹,列出他下面所属的所有文件和目录 (2)然后遍历这些目录和文件,判断哪些是目录,哪些是文件 (3)如果是文件,就看是否匹配某位以abc结尾,如果是就输出 (4)如果是文件夹,就继续按(1)-(3)步骤递归代码实现如下: 阅读全文
posted @ 2009-11-23 23:07 Chris Wang 阅读(1689) 评论(0) 推荐(0)
摘要:题目:多个线程,有些线程对int成员m加1,有些线程这个int成员减1,要求m最小不能小于0,最大不能超过10. 思路:(1)首先定位问题实质,这道题就是多线程里面经典的“生产者-消费者问题”。 (2)对于此问题的描述是:有一块生产者和消费者共享的有界缓冲区,生产者往缓冲区放入产品,消费者从缓冲区取走产品,这个过程可以无休止的执行,不能因缓冲区满生产者放不进产品而终止,也不... 阅读全文
posted @ 2009-11-23 11:51 Chris Wang 阅读(1783) 评论(0) 推荐(0)
摘要:求一组数据中所有以下条件的数arr={n1,n2,n3...}: (1)这些数既大于所有它左边的数 (2)又大于所有它右边的数。 输出所有的满足上述条件得数,如果没有就什么都不输出.思路: 一般的思路是 (1)对于这样一组数据{ 2, 3, 1, 2, 8, 9, 11, 22, 13 ,77,888,999} (2)以数组中每个数据做为基准点,去它检查左边的数据是否都小于它,右边的数据是否都大于... 阅读全文
posted @ 2009-11-11 14:24 Chris Wang 阅读(489) 评论(1) 推荐(0)
摘要:平衡点:比如int[] numbers = {1,3,5,7,8,25,4,20}; 25前面的总和为24,25后面的总和也是24,25这个点就是平衡点;假如一个数组中的元素,其前面的部分等于后面的部分,那么这个点的位序就是平衡点 要求:返回任何一个平衡点 代码实现(Java): 阅读全文
posted @ 2009-11-09 23:56 Chris Wang 阅读(510) 评论(0) 推荐(0)
摘要:贪心法:是指从问题的初始状态出发,通过若干次的贪心选择而得出最优值(或较优值)的一种解题方法。贪心策略总是做出在当前看来是最优的选择,也就是说贪心策略并不是从整体上加以考虑,它所作出的选择只是在某种意义上的局部最优解。就拿找零钱的这道题来说吧:当前有面值分别为50元,20元,10元,5元,2元,1元的零钱,请给出找n元钱的最佳方案?用贪心法的思想就是:老板要找给我99元的话,他有上面的面值分别为5... 阅读全文
posted @ 2009-11-09 23:44 Chris Wang 阅读(4148) 评论(0) 推荐(0)
摘要:求排序一堆整数,数据都是有限范围的和有限个数的,任意数据都小于100000,个数也肯定小于100000,对他们进行排序,要求O(n)的时间复杂度. 思路: (1)比如有一组数据arr={1,200,44,232,12,33,200},然后定义一个数组int[] count = new int[100000],初始化每一个数据值为0; (2)然后扫描这个数组,然后count[arr[1]]++,即:... 阅读全文
posted @ 2009-11-06 16:26 Chris Wang 阅读(554) 评论(0) 推荐(0)
摘要:求一个整数的各位累加和?比如:152->1+5+2->8 -777->-7+7+7=7思路:(1)所以要考虑这个数是 整数和负数的情况,分开处理这两种情况。(2)如果是正整数的话,每一次对这个数num求mod 10得到末尾的数m=num%10, m=num%10 然后再去尾数num=num/10,然后每次加m(3)如果是负数的话,注意m=num%10,得到并不是最末尾数,而是末尾... 阅读全文
posted @ 2009-11-05 00:08 Chris Wang 阅读(513) 评论(0) 推荐(0)
摘要:1.一个饲养场引进一只刚出生的新品种兔子,这种兔子从出生的下一月开始,每月新生一只兔子,新生的兔子也如此繁殖。如果所有的兔子 都不死去,问到第十二月时,该饲养场共有兔子多少只? 思路:这是一个典型的递推问题。 (1)设第一个月兔子只数为R1. 第二个月的兔子只数为R2,第n个月的只数Rn,则 R1=1 R2=R1+R1*1 =2 R3=R2+R2*1 =4 根据这个规律可以推出递推公式: Rn=2... 阅读全文
posted @ 2009-11-04 14:57 Chris Wang 阅读(826) 评论(0) 推荐(0)
摘要:一个整形序列arr={1, -1, -2, 2, 3, 4,-9, -5},数字有正,有负数,求他的最大的连续子串和?O(n)解法思路:(1)从左到右,从数组中第一个数开始加和,arr中的每一个数记做arr[i](i从1开始),max初始值为0(2)其实Sn=Sn-1+arr[n],如果Sn<arr[n]则Sn=arr[n](3)总是判断sum是否大于max,如果大于则max=sum下面是整... 阅读全文
posted @ 2009-11-03 23:21 Chris Wang 阅读(582) 评论(0) 推荐(0)
摘要:对于一个序列r={4,3,5…}求全排列?递归解法的思路:(1)对于一个序列R={4,3,5…},它其中的每一个数设为Ri,它的全排列我们设为perm(R).(2)对于R的全排列我们可以转化成几个小的问题:4开头,{3,5…}的全排列,3开头,{4,5…}的全排列,5开头,{4,3…}的全排列 即Perm(R)= {R1Perm... 阅读全文
posted @ 2009-11-03 11:55 Chris Wang 阅读(288) 评论(0) 推荐(0)
摘要:一个整形序列(-2,1,2,3,4,2,-1,2,3,-8,1....),数字有正,有负数,求他的最大的连续子串和?思路1:(1)找到所有的连续子串(2)对字串求和(3)然后比较得出最大的连续子串和可是如何找出所有的连续子串呢?以s={-2,1,2,3}为例.从-2开始:(1)-2(2)-2,1(3)-2,1,2(4)-2,1,2,3是s的连续子串。从1开始:(1)1(2)1,2(3)1,2,3也... 阅读全文
posted @ 2009-10-30 16:46 Chris Wang 阅读(404) 评论(0) 推荐(0)
摘要:求一篇英文文章中各个字母出现的频率,不区分大小写. 思路:(1)首先定义一个数组freArray= new int[26],存放每个单词的出现频率. (2)读取该篇文章到内存中,并形成一个字符数组. (3)遍历该字符数组 ----首先判断被遍历到字符c的ascii值是否大于'A'而且小于'Z',如果是,则freArray[c-'A']++ ----然后判断被遍历到字符c的ascii值是否大于'a'... 阅读全文
posted @ 2009-10-28 17:22 Chris Wang 阅读(1329) 评论(0) 推荐(0)