简直offer:跳台阶

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/paulkg12/article/details/84553181

前言

最近有道云笔记老是没响应,会员也这样,所以把算法的笔记公开到这个csdn,也算是公开的鞭策。

题目常练习起点位置: https://www.nowcoder.com/ta/coding-interviews?asc=false&order=knowledgePoint

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

题目link

考虑:

这就是个递归的问题,如果你再深入看,就又是Fabonacci 数列,这时你会采取while 循环,更快


从target - 2 或者target -1跳上来, 两种方法

边界:

target == 2 : return 2;
target == 1 : retrun 1;

代码:

public class Solution {
    public int JumpFloor(int target) {
    	if (target == 2) return 2;
    	if (target == 1) return 1;
    	//else bigger than 2, let's recursive call it's grand...son
    	int sum1 = JumpFloor(target - 1) + 1;// TT 这里不需要加1 ,请理解递归
    	int sum2 = JumpFloor(target - 2) + 1;// TT 这里不需要加1 ,请理解递归
    	return sum1 + sum2;
    }
}

修正如下:

// 修正TT 那里
public class Solution {
    public int JumpFloor(int target) {
    	if (target == 2) return 2;
    	if (target == 1) return 1;
    	//else bigger than 2, let's recursive call it's grand...son
    	int sum1 = JumpFloor(target - 1);
    	int sum2 = JumpFloor(target - 2);
    	return sum1 + sum2;
    }
}

/*
运行时间:561ms

占用内存:9384k

 */

猜你喜欢

转载自blog.csdn.net/paulkg12/article/details/84553181