简直offer:跳台阶

前言

最近有道云笔记老是没响应,会员也这样,所以把算法的笔记公开到这个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

 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值