编程之美--2.10
摘要:题目描述:求数组的最大值和最小值,并且计算比较次数思路:(1)普通思路是遍历一遍,得比较2*N次(2)分治,具体计算可以参考书上内容,算法时间复杂度是O(logn) 1 #include 2 #include 3 #include 4 #include 5 #include 6 #incl...
阅读全文
数组面试题--数组求和
摘要:题目描述:给定一个数组,实现函数用一行代码返回这个数组的和思路:递归即可 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 int fun(vecto...
阅读全文
面试金典--9.11
摘要:题目描述:给定一个布尔表达式以及一个布尔值,算出有多少种放括号的方法使得表达式的值为给定布尔值思路:(1)递归,从左到右对每个运算符求可能的情况,有很多重复子问题(2)DP,dp[i][j][0]表示i到j之间的求值为0的方法数,dp[i][j][1]表示i到j之间求值为1的方法数 1 #incl...
阅读全文
面试金典--9.10
摘要:题目描述:给你一堆箱子,箱子宽wi,高hi,深di。箱子不能翻转,将箱子堆起来,下面的箱子必须宽、高、深均大于上面的箱子。实现一个方法,使得堆起来的箱子高度和最大思路:(1)简单思路就是递归,判断以每个箱子为底的时候得到的最大高度,优化就是可以排除比当前底要大的。(2)上面思路有很多重复计算,我们可...
阅读全文
面试金典--9.8
摘要:题目描述:给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示方法思路:一开始我想既然可以递归,那么加备忘或者自底向上DP就可以了,于是出现如下代码 1 //有可能有重复计算,所以这个方法不可行 2 int dp[10000]; 3 int fun(int n) 4 { ...
阅读全文
编程之美--3.4
摘要:题目描述:删除没有头结点的链表的指定节点思路:这道题和面试金典那道题有点像,当时的思路是将后面节点赋值到当前节点,最后删除尾节点,但是那样的话就会出现(1)尾节点没法删除(2)时间复杂度为O(n);这里换个思路,删除当前节点的下一个节点,把下个节点的值赋给当前节点,复杂度为O(1)。尾节点单独处理。...
阅读全文
编程之美--3.3
摘要:题目描述:计算相似度,其实本质就是计算编辑距离思路:一开始先递归,然后加备忘改DP,发现有很多重复子问题,再重新设计dp算法 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using ...
阅读全文
编程之美--2.6
摘要:这里和上一题关于gcd的都没有考虑大数运算相关的。题目描述:求浮点数的精确表示思路:通过分数来进行表示最精确,所以问题转化成了如何通过分数表示浮点数(1)非循环小数:c.a(其中c表示一个整数,a表示一个整数),那么分数就是(c*(10^n)+a)/10^n,其中n为a的位数,最后约分(2)循环小数...
阅读全文
编程之美--2.7
摘要:题目描述:最大公约数问题思路:三个思路(1)gcd(x,y) = gcd(y,x%y);(2)gcd(x,y) = gcd(y,x-y);(3)gcd(x,y) = gcd(x/2,y/2)*2;(x,y均被2整除) 1 #include 2 #include 3 #include 4 #in...
阅读全文
面试金典--9.6
摘要:题目描述:实现一种算法,打印n对括号的全部有效组合思路:递归,不合法状态就是right 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 vector res;10 void...
阅读全文
编程之美--2.13
摘要:题目描述:给定长度为N的数组,只允许用乘法,求任意N-1个元素的乘积最大值思路:(1)直接选出任意N-1个元素求结果(2)对第i个元素,记录其左边以及右边的元素乘积,最后遍历一遍,求l[i]*r[i]的最大值即可 1 #include 2 #include 3 #include 4 #incl...
阅读全文
编程之美--2.17
摘要:题目描述:数组循环移动K位分析:这道题和之前碰到的字符串循环移位其实是一个思路的,编程珠玑上面也讲了这道题。(1)第一种方法是对数组划分成两个部分,对两部分进行反转,同时对整个数组进行反转(2)第二种方法是将第i位的元素和(i+k)%N的元素交换,从第0个元素开始,循环直到回到第0个元素。 1 #i...
阅读全文
编程之美--3.8
摘要:题目描述:求二叉树节点的最大距离,距离是节点之间边的数目思路:递归判断左子树右子树以及经过当前节点的值的大小 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include ...
阅读全文
编程之美--3.7
摘要:题目描述:实现一个队列,要求有MAX操作,且越快越好。思路:这道题其实就是之前碰到的,两个栈实现一个队列+min栈,变形题目,当然可以使用类似于min栈的实现(http://www.cnblogs.com/cane/p/3793510.html)来实现一个max栈了,这里提供一个书上的另外的一个实现...
阅读全文
面试金典--9.3
摘要:题目描述:给定有序数组,要求找出A[i]=i的索引。(没有重复元素)简单粗暴的方法:遍历一遍(这里可以优化,若当前A[i] != i,但是A[i] > i,那么因为数组有序,所以后面的元素不可能满足条件,可以直接输出了,这个思想可以用到有重复元素的情况下)。二分递归法:比较A[mid]与mid的关系...
阅读全文
面试金典--9.2
摘要:题目描述:设想有个机器人坐在X*Y网格的左上角,只能向右向下移动。机器人从(0,0)开始出发,到(X,Y)共有多少种方法。思路:到i,j只和,(i-1,j)和(i,j-1)有关递归的时候加备忘 1 #include 2 #include 3 #include 4 #include 5 #in...
阅读全文
面试金典--9.1
摘要:类似于斐波切数列,自下而上,添加备忘 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include ...
阅读全文
面试金典--4.5
摘要:题目描述:实现一个函数,检查一颗二叉树是否为二叉查找树思路:递归判断当前节点以及其左右子树(这种思路是错误的,因为二叉查找树必须左子树所有节点小于等于当前节点;右子树所有节点大于当前节点;) 1 #include 2 #include 3 #include 4 #include 5 #inc...
阅读全文
面试金典--4.4
摘要:题目描述:给定二叉树,同一深度的放置在同一链表中,深度为D则有D个链表,BFS即可。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include ...
阅读全文
面试金典--3.5
摘要:http://www.cnblogs.com/wanghui9072229/archive/2011/11/22/2259391.html老题目了,4月份面腾讯实习的时候问了这道题,都不用写代码的。 1 #include 2 #include 3 #include 4 #include 5 ...
阅读全文