摘要:
剑指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... 阅读全文
摘要:
剑指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]... 阅读全文
摘要:
剑指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 阅读全文
摘要:
剑指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 阅读全文