Leecode刷题之旅-C语言/python-70爬楼梯

/*
 * @lc app=leetcode.cn id=70 lang=c
 *
 * [70] 爬楼梯
 *
 * https://leetcode-cn.com/problems/climbing-stairs/description/
 *
 * algorithms
 * Easy (44.44%)
 * Total Accepted:    33.5K
 * Total Submissions: 75.4K
 * Testcase Example:  '2'
 *
 * 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
 * 
 * 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
 * 
 * 注意:给定 n 是一个正整数。
 * 
 * 示例 1:
 * 
 * 输入: 2
 * 输出: 2
 * 解释: 有两种方法可以爬到楼顶。
 * 1.  1 阶 + 1 阶
 * 2.  2 阶
 * 
 * 示例 2:
 * 
 * 输入: 3
 * 输出: 3
 * 解释: 有三种方法可以爬到楼顶。
 * 1.  1 阶 + 1 阶 + 1 阶
 * 2.  1 阶 + 2 阶
 * 3.  2 阶 + 1 阶
 * 
 * 
 */
int climbStairs(int n) {
    int f1 = 1;
    int f2 = 2;
    int f3;
    int i =2;
    if(n==1){
        return 1;
    }
    if(n<1){
        return 0;
    }
    while(i<n){
        f3 = f1+f2;
        f1 = f2;
        f2 = f3;
        i++;
    }
    return f3;
}

n=1的时候值为1,n=2的时候值为2。n等于3的时候值为3,f3=f1+f2 是典型的斐波那契数列

所以求n阶需要多少步,其实就是求f(n)的过程。

------------------------------------------------------------------------------------------------------------------------

python:

#
# @lc app=leetcode.cn id=70 lang=python3
#
# [70] 爬楼梯
#
# https://leetcode-cn.com/problems/climbing-stairs/description/
#
# algorithms
# Easy (44.44%)
# Total Accepted:    33.5K
# Total Submissions: 75.4K
# Testcase Example:  '2'
#
# 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
# 
# 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
# 
# 注意:给定 n 是一个正整数。
# 
# 示例 1:
# 
# 输入: 2
# 输出: 2
# 解释: 有两种方法可以爬到楼顶。
# 1.  1 阶 + 1 阶
# 2.  2 阶
# 
# 示例 2:
# 
# 输入: 3
# 输出: 3
# 解释: 有三种方法可以爬到楼顶。
# 1.  1 阶 + 1 阶 + 1 阶
# 2.  1 阶 + 2 阶
# 3.  2 阶 + 1 阶
# 
# 
#
class Solution:
    def climbStairs(self, n: int) -> int:
        f1=1
        f2=2
        f3=0
        i=2
        if n==1:
            return 1
        if n==2:
            return 2
        if n<1:
            return 0
        while i<n:
            f3 = f1+f2
            f1 = f2
            f2 = f3
            i+=1
        return f3

猜你喜欢

转载自www.cnblogs.com/lixiaoyao123/p/10515904.html