摘要: 题目:把n个筛子扔到地上,所有筛子朝上一面的点数之和为s,输入n,打印出s的所有可能的值出现的概率。分析: 方法1:递归。 要求概率,那么我们首先只需要求出每个s出现的次数/(6^n)。怎么求s的次数呢?我们不妨把n个筛子分成2堆,一堆一个筛子,另一堆有n-1个筛子,第1堆筛子出现的... 阅读全文
posted @ 2014-07-08 22:41 menghuizuotian 阅读(744) 评论(0) 推荐(0)
摘要: 题目:一个整型数组里,除了两个数字以外,其他数字都出现了两次,请写程序找到这两个只出现一次的数字。要求:时间复杂度为O(n),空间复杂度为O(1).分析:看到这题,首先要明白,这是求两个数字。还要明白其要求,空间复杂度和时间复杂度。如果没有这些约束我们可以有很多方法解,如Hash、逐次遍历等。 ... 阅读全文
posted @ 2014-07-07 00:31 menghuizuotian 阅读(514) 评论(0) 推荐(0)
摘要: 题目: 输入一棵二叉树的根节点,判断该树是不是平衡二叉树。分析:首先要明白平衡二叉树的概念: 平衡二叉树必须满足两个条件:1)左右子树的高度差不能大于1 2)每个根节点下面的左右子树也必须满足平衡二叉树的性质。 对于本题,我们首先要知道如何去求一棵二叉树的深度,接下来我们只需要判断每个节点... 阅读全文
posted @ 2014-07-06 21:15 menghuizuotian 阅读(3781) 评论(0) 推荐(0)
摘要: 题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第100个丑数。分析:请看如下图: index index2(*2) index3(*3) index5(*5)... 阅读全文
posted @ 2014-07-04 11:01 menghuizuotian 阅读(253) 评论(0) 推荐(0)
摘要: 题目:输入一个正整数数组,把数组里面所有数字拼接起来排成一个数,打印能拼接出的所有数字钟最小的一个。例如:输入数组{3,,32,321} ,则打印出来的最小数是321323.分析:这里一个需要注意的是,组成的数有可能溢出,所以这是一个大数问题。对于大数问题,我们又想到不能直接这么组成一个数字,可以采... 阅读全文
posted @ 2014-07-01 23:45 menghuizuotian 阅读(326) 评论(0) 推荐(0)
摘要: 题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次。分析:首先最先想到的是遍历从1到n的每个数,判断每个数中包含1的个数,再相加。 时间复杂度:如果输入数字为n,n有O(logn)位,我们需要... 阅读全文
posted @ 2014-06-28 15:54 menghuizuotian 阅读(1958) 评论(0) 推荐(0)
摘要: 题目:输入一个整型数组,数组里有正数也有负数。数组中一个或者连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)分析:首先需要考虑的条件:数组里有正数也有负数,根据这个条件,从数组第一个元素开始,temp累计相加,当temp增加时,我们就将temp赋值给sum。当temp... 阅读全文
posted @ 2014-06-27 22:04 menghuizuotian 阅读(215) 评论(0) 推荐(0)
摘要: 1.自我介绍,谈谈项目。 说完之后,我说做的还不错,顺便问了几个问题,主要集中于维度、时间这块来问。2.问我哪门语言比较精通,学了多久 我说C++,问我写过多少,我说几万行,然后就被鄙视了一下。接下来顺着问了我:1)static 的用法。2)静态成员函数,能否调用非静态成员。这个没答上来3.问我有没... 阅读全文
posted @ 2014-06-26 11:16 menghuizuotian 阅读(534) 评论(0) 推荐(0)
摘要: 题目:衔接上题,如果不是求字符的所有排列而是求所有字符的组合呢?还是输入三个字符a,b,c,则他们的组合有a,b,c,ab,ac,bc,abc.其中ab和ba只能算一个组合。分析:组合问题也是可以用递归来解决的。首先,我们先来考虑这样一个问题,从M个不同字符中任取N个字符的所有组合,假设我们要求ab... 阅读全文
posted @ 2014-06-21 20:37 menghuizuotian 阅读(529) 评论(0) 推荐(0)
摘要: 题目:输入一个字符串,打印出该字符串中字符的所有排列。例如:输入字符abc,则打印所有组合字符串:abc,acb,bac,bca,cab,cba分析:把复杂的问题进行分解,变成更小的问题。分治法一般很容易想到用递归。首先理解递归:参见http://www.cnblogs.com/zhangqqqf/... 阅读全文
posted @ 2014-06-20 22:15 menghuizuotian 阅读(1520) 评论(0) 推荐(1)