题解:最容易理解 | #跳台阶#

跳台阶

https://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param number int整型 
 * @return int整型
 */
function jumpFloor( number ) {
    // write code here
    if(number <= 1){
        return 1;
    }
    let recordMethod = new Array(number + 1);
    recordMethod[0] = 1;
    recordMethod[1] = 1;
    recordMethod[2] = 2;
    for(let i = 3; i < recordMethod.length; i++){
        recordMethod[i] = recordMethod[i - 1] + recordMethod[i - 2]
    };
    return recordMethod[number]
}
module.exports = {
    jumpFloor : jumpFloor
};

思路:

死记斐波那契

* 跳上1阶 1种方法: 跳一下1阶

* 跳上2阶 2种方法: 连续跳两下1阶(也可理解为从1层跳1阶), 或则跳一下2阶

* 跳上3阶最后一次 2种方法: 从1 层跳2阶, 或则从 2层跳一下1阶;

* 跳上n阶最后一次 2种方法: 从 n-2层阶跳一下2阶, 或者从n-1层跳一下1阶

则跳上3阶的全部方法 = 跳上1层的方法 + 跳上2层的方法

故跳上n阶的全部方法 = 跳上n-2层的方法 + 跳上n-1层的方法

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务