zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    sqlserver,获取调用存储过程返回数据的方法。
    手动为弹窗添加一个阴影背景。
    bootstrap资料链接
    进入Linux救援(rescue)模式的四大法门
    virtual box 5.2.12 扩展包安装
    pypi配置国内开源镜像
    vs2015利用python加载dll调试配置
    ubuntu18安装ubuntu kylin软件中心
    firefox快捷键窗口和标签类
    设置双网卡路由
  • 原文地址:https://www.cnblogs.com/lixiaoyao123/p/10515904.html
Copyright © 2011-2022 走看看