2013年11月24日
摘要: 剑指Offer - 九度1388 - 跳台阶2013-11-24 03:43题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。输入:输入可能包含多个测试样例,对于每个测试案例,输入包括一个整数n(1 4 using namespace std; 5 6 int main() 7 { 8 int n, i; 9 long long int f1, f2, f3;10 11 while(scanf("%d", &n) == 1){12 if(n == 0){13 printf... 阅读全文
posted @ 2013-11-24 03:48 zhuli19901106 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 剑指Offer - 九度1387 - 斐波那契数列2013-11-24 03:08题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。斐波那契数列的定义如下:输入:输入可能包含多个测试样例,对于每个测试案例,输入包括一个整数n(1= 3 数学推导上,可以用特征根方程求出x^2 = x + 1的俩根 x = (1 土 sqrt(5)) / 2,编程的话你当然不会这么无聊去惹出一对无理数来。 方法一,从f[1]、f[2]开始逐个计算f[3]到f[n],求出f[n]。时间复杂度O(n),空间复杂度O(1)。 方法二,用矩阵来计算。 将[f[n + 1]... 阅读全文
posted @ 2013-11-24 03:41 zhuli19901106 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 剑指Offer - 九度1386 - 旋转数组的最小数字2013-11-24 01:57题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行为一个整数n(1= a[i + 1]的那个位置,就能确定a[i + 1]就是最小元素了。对于k = 0的情况,整个数组没旋转,那么会一直扫到数组结尾,加一句话特殊处理。应该避免为这么一个特殊case使用%运算,因为性能会出现O(n 阅读全文
posted @ 2013-11-24 02:57 zhuli19901106 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 剑指Offer - 九度1385 - 重建二叉树2013-11-23 23:53题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的后序遍历序列。输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行为一个整数n(1 4 #include 5 using namespace std; 6 7 void construct_tree(vector &a, vector &b, v 阅读全文
posted @ 2013-11-24 00:48 zhuli19901106 阅读(311) 评论(0) 推荐(0) 编辑
2013年11月23日
摘要: 剑指Offer - 九度1384 - 二维数组中的查找2013-11-23 23:23题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行为两个整数m和n(1 4 using namespace std; 5 6 const int MAXN = 1005; 7 int a[MAXN][MAXN]; 8 int x, y; 9 10 int main()11 {12 int i, j;13 i... 阅读全文
posted @ 2013-11-23 23:53 zhuli19901106 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 剑指Offer - 九度1372 - 最大子向量和(连续子数组的最大和)2013-11-23 16:25题目描述:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天JOBDU测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?输入:输入有多组数据,每组测试数据包括两行。第一行为一个整数n(0 msum则更新msum,如果su 阅读全文
posted @ 2013-11-23 22:46 zhuli19901106 阅读(408) 评论(0) 推荐(0) 编辑
摘要: 剑指Offer - 九度1371 - 最小的K个数2013-11-23 15:45题目描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。输入:每个测试案例包括2行:第一行为2个整数n,k(1 4 #include 5 #include 6 using namespace std; 7 8 int main() 9 {10 // min heap11 priority_queue, less > pq;12 vector vv;13 int n, k;14 int i, t... 阅读全文
posted @ 2013-11-23 15:46 zhuli19901106 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 剑指Offer - 九度1370 - 数组中出现次数超过一半的数字2013-11-23 03:55题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。输入:每个测试案例包括2行:第一行输入一个整数n(1 4 #include 5 using namespace std; 6 7 int main() 8 { 9 int tmp, ans;10 int c;11 int i, n;12 map mm; // mus... 阅读全文
posted @ 2013-11-23 04:06 zhuli19901106 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 剑指Offer - 九度1368 -二叉树中和为某一值的路径2013-11-23 03:46题目描述:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。输入:每个测试案例包括n+1行:第一行为2个整数n,k(1 4 #include 5 using namespace std; 6 7 void dfs(const int a[][3], const int &n, int r, int sum, int target, vector &path) 8 { 9 if(r n){10 ... 阅读全文
posted @ 2013-11-23 03:52 zhuli19901106 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列2013-11-23 03:16题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。输入:每个测试案例包括2行:第一行为1个整数n(1 4 using namespace std; 5 6 bool check_postorder(const int a[], int left, int right) 7 { 8 if(a == NULL || left right){ 9 return false;10 ... 阅读全文
posted @ 2013-11-23 03:40 zhuli19901106 阅读(265) 评论(0) 推荐(0) 编辑