09 2015 档案

摘要:题目:给定一个没有重复元素的数组A,定义A上的MaxTree如下:MaxTree的根节点为A中最大的数,根节点的左子树为数组中最大数左边部分的MaxTree,右子树为数组中最大数右边部分的MaxTree。请根据给定的数组A,设计一个算法构造这个数组的MaxTree。思路:如果能够确定每个节点的父亲节... 阅读全文
posted @ 2015-09-30 17:43 AndyJee 阅读(728) 评论(0) 推荐(0) 编辑
摘要:题目:给定三个字符串A, B, C,判断C是否由A和B交错构成。交错构成的意思是,对于字符串C,可以将其每个字符标记为A类或B类,使得我A类的每个字符顺序构成了A字符串,B类的每个字符顺序构成了B字符串。如:对于A=”rabbit” B=”mq”, ”rabmbitq”是由A和B交错构成的,但”ra... 阅读全文
posted @ 2015-09-30 16:17 AndyJee 阅读(1900) 评论(0) 推荐(0) 编辑
摘要:题目:给定一个只包含正整数的数组,给出一个方法,将数组中的数拼接起来,使得拼接后的数最大。例如,[1, 32, 212]拼接之后,所得到的最大数为322121。思路:比较方法:两个数先后顺序的确定,如a,b,如果ab>ba(转换为字符串,通过字典序排序),则a在b的前面;通过上面的比较方法,就可以对... 阅读全文
posted @ 2015-09-30 11:13 AndyJee 阅读(755) 评论(0) 推荐(0) 编辑
摘要:题目:1、有一个100层高的大厦,你手中有两个相同的玻璃围棋子。从这个大厦的某一层及更高的层扔下围棋子就会碎,用你手中的这两个玻璃围棋子,找出一个最优的策略(扔最少的次数),来得知那个临界层面。2、如果大厦高度是N层,你有K个棋子,请问最少需要扔几次可以知道得临界层?思路:1、推导这里不推倒,直接给... 阅读全文
posted @ 2015-09-29 16:00 AndyJee 阅读(874) 评论(0) 推荐(0) 编辑
摘要:题目:有头巾五条,三白二红,有三个人排成一列,每人戴一条头巾,后面的人能看到前面的人的头巾颜色,让每个人依次猜自己头巾的颜色,第一个人说不知道,第二个人说不知道,第三个人说不知道,沉默一会之后,突然某个人说“我知道了”,请问这个人是哪个?他的头巾是什么颜色?思路:答案:第一个人,头巾为白色。分析:1... 阅读全文
posted @ 2015-09-26 11:18 AndyJee 阅读(735) 评论(0) 推荐(0) 编辑
摘要:题目:和为零的最大连续子数组思路:我首先想到的是前缀数组和,遍历一遍数组,计算出sum[i](表示从0-i的子数组之和)。有了前缀数组和,只要sum[i]=sum[j](i#include#includeusing namespace std;// O(n^2)int longestSubArray... 阅读全文
posted @ 2015-09-26 10:58 AndyJee 阅读(1085) 评论(0) 推荐(0) 编辑
摘要:题目:1、有两个数组A和B,每个数组有k个数,从两个数组中各取一个数加起来可以组成k*k个和,求这些和中的前k大。2、有N个数组,每个数组有k个数,从N个数组中各取一个数加起来可以组成k^N个和,求这些和中的前k大。思路:1、将A和B两个数组,按照从大到小排序,那么很容易得到下面的求和矩阵,假设为C... 阅读全文
posted @ 2015-09-25 18:53 AndyJee 阅读(1388) 评论(0) 推荐(0) 编辑
摘要:题目:有两个数组A和B,假设A和B已经有序(从大到小),求A和B数组中所有数的第K大。思路:1、如果k为2的次幂,且A,B 的大小都大于k,那么考虑A的前k/2个数和B的前k/2个数,如果A[k/2]B[mid]:如果m/2+n/2大于k,则表明k存在于A和B的前一半中;否则,只需在B的n/2之后的... 阅读全文
posted @ 2015-09-23 21:28 AndyJee 阅读(5000) 评论(0) 推荐(0) 编辑
摘要:题目:假设有个有序数组在某个位置旋转,得到新的数组,即为旋转有序数组。如:(i.e.,0 1 2 4 5 6 7might become4 5 6 7 0 1 2).现给定一个这样的数组,在数组中查找某个数。如果找到,返回下标,否则返回-1;思路:思路1:考虑一个旋转有序数组的特点:前面部分是递增的... 阅读全文
posted @ 2015-09-22 13:04 AndyJee 阅读(1470) 评论(0) 推荐(0) 编辑
摘要:题目:给定一数组,判断它是否为二叉查找树的后序遍历数组思路:想想,二叉查找数树的特点,任意根结点大于左子树的所有值,而小于右子树的所有值;再想想,后序遍历的特点,先遍历左子树,再遍历右子树,最后是根结点;因此很容易找到根结点,然后遍历数组找出左子树(从左往右比根结点小的),剩下右边的就是右子树,然后... 阅读全文
posted @ 2015-09-21 22:38 AndyJee 阅读(383) 评论(0) 推荐(0) 编辑
摘要:题目:假设有如下操作,偶数则除以2,奇数可以加1或减1,那么问给定某个数,让它变成1需要的最少操作是多少步?思路:1、动态规划:递推方程:if n&1==1 dp[n]=min(dp[n-1]+1,dp[(n+1)/2]+1)if n&1==0 dp[n]=dp[n/2]+1初始状态:dp[1]=1... 阅读全文
posted @ 2015-09-21 22:15 AndyJee 阅读(969) 评论(0) 推荐(0) 编辑
摘要:题目:给定一个包含 n 个整数的排序数组,找出给定目标值 target 的起始和结束位置。如果目标值不在数组中,则返回[-1, -1]思路:1、直接遍历数组,复杂度O(n)2、二分查找先通过二分查找,找到target出现的最左边的位置,如果不存在,返回-1;再通过二分查找,找到target出现的最右... 阅读全文
posted @ 2015-09-21 22:04 AndyJee 阅读(1813) 评论(0) 推荐(0) 编辑
摘要:题目:Given n * m non-negative integers representing an elevation map 2d where the area of each cell is 1 * 1, compute how much water it is able to trap ... 阅读全文
posted @ 2015-09-19 16:02 AndyJee 阅读(1129) 评论(0) 推荐(0) 编辑
摘要:题目:Givennnon-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining... 阅读全文
posted @ 2015-09-19 15:43 AndyJee 阅读(522) 评论(0) 推荐(0) 编辑
摘要:题目:1、给定一数组,求该数组的最大子数组和;2、给定一矩阵,求该矩阵的最大子矩阵和;思路:1、求数组的最大子数组和很简单,可以通过动态规划来实现,假设数组为arr:假设dp[i]表示从0到i的数组的最大子数组和,那么递推关系式表示为:dp[0]=arr[0];dp[i]=dp[i-1]>0?dp[... 阅读全文
posted @ 2015-09-17 22:41 AndyJee 阅读(1816) 评论(0) 推荐(0) 编辑
摘要:题目:给定一数组,大小为M,数组中的数字范围为1-N,如果某带宽有限,无法传输该大小的数组,该怎么办?思路:通过位图BitMap来压缩数组,将数组中每个数字在bit位上标志,这样就可以将数组大小压缩很多倍,每个32位int只需要1bit来表示。代码:#include#includeusing nam... 阅读全文
posted @ 2015-09-07 21:42 AndyJee 阅读(513) 评论(0) 推荐(0) 编辑
摘要:题目:给定某字符串,判断该字符串中是否包含HelloWorld,出现HelloWorld不一定要连续,但顺序不变,如“HeByello,ByeWorByeld”就包含“HelloWorld”。思路:通过i,j来遍历两个字符串str1,str2(HelloWorld),假设长度分别为m,n;当i>m或... 阅读全文
posted @ 2015-09-07 21:21 AndyJee 阅读(1541) 评论(0) 推荐(0) 编辑
摘要:题目:The gray code is a binary numeral system where two successive values differ in only one bit.Given a non-negative integernrepresenting the total num... 阅读全文
posted @ 2015-09-07 20:21 AndyJee 阅读(1119) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示