70. 爬楼梯

假设你正在爬楼梯。需要 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 {
    public int climbStairs(int n) {
        if (n <= 0) {
            throw new IllegalArgumentException();
        }
        int x = 0;
        int y = 0;
        for (int i = 1; i <= n; i++) {
            if (i == 1) {
                x = 1;
                y = 1;
            }
            if (i == 2) {
                y = 2;
            }
            if (i > 2) {
                int tmp = x;
                x = y;
                y = tmp + x;
            }
        }
        return y;
    }
}

  

原文地址:https://www.cnblogs.com/Stefan-24-Machine/p/10977607.html

时间: 2024-10-08 21:32:51

70. 爬楼梯的相关文章

[leetcode] 70. 爬楼梯

70. 爬楼梯 最简单的动态规划 假设f[i]表示爬到第i层有几种爬法 那么状态转移方程为:f[i] = f[i-1] + f[i-2] 初始条件显然是:f[1]=1,f[2] = 2; class Solution { public int climbStairs(int n) { if (n == 1) return 1; int f[] = new int[n]; f[0] = 1; f[1] = 2; for (int i = 2; i < n; i++) { f[i] = f[i -

#动态规划 LeetCode 70 爬楼梯

假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶. 1 阶 + 1 阶 2 阶 示例 2: 输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶. 1 阶 + 1 阶 + 1 阶 1 阶 + 2 阶 2 阶 + 1 阶 思路:关于动态规划的问题,一般选择先使用递归的思路切入问题.以本题为例: 递归的思路,我们要确定当前递归函数

leetcode 70. 爬楼梯(Climbing Stairs)

目录 题目描述: 示例 1: 示例 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 阶 解法: clas

LeetCode 70 - 爬楼梯 - [递推+滚动优化]

假设你正在爬楼梯.需要 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 阶 设 $f[n]$ 表示跳上 $n$ 级台阶的方案数目,因此很容易得到 $f[n] = f[n-1

LeetCode 题解 | 70. 爬楼梯

假设你正在爬楼梯.需要 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 阶 Code class Solution { public: int climb

菜鸡学算法--70. 爬楼梯

先来看题目: 假设你正在爬楼梯.需要 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 阶 作为一个菜鸡,看到题目直接懵逼,思路混乱. 解题大招: 首先,计算可执行的逻辑最后

力扣第70题:爬楼梯

力扣第70题:爬楼梯 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶. 1 阶 + 1 阶 2 阶 示例 2: 输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶. 1 阶 + 1 阶 + 1 阶 1 阶 + 2 阶 2 阶 + 1 阶 ? int climbStairs(int n) { if (n <= 1) { re

Leetcode -- 爬楼梯(70)

题目描述:假设你正在爬楼梯.需要 n 阶你才能到达楼顶.每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶? 思路:分为两种情况,最后一步爬1个台阶或者最后一步爬2个台阶,二者之和即为所有的可能的方法.首先想到了递归算法,很不幸的是当n=38时就已经超时了.另外两种方法,斐波拉契数列以及动态规划法. 思路一:动态规划法 初始化dp[0]=0,dp[1]=1.dp[n]=dp[n-1]+dp[n-2] 1 class Solution: 2 def climbStairs(self

【DP】爬楼梯

虽然这是一道水题DP,但是 还是在杨老师的帮助下完成了题目. 题目描述: 蒜头君要爬一个有 nn 个台阶的楼梯.蒜头君一步可以走 11 个台阶或 22 个台阶.现在蒜头君想请你帮忙算下,一共会有多少种不同的爬楼梯方法? 输入格式 输入一行,输入一个正整数 n(1 \leq n \leq 70)n(1≤n≤70),代表一共有 nn 个台阶. 输出格式 输出一行,输出一个整数,表示一共有多少种不同的爬楼梯方法. 样例输入 3 样例输出 3 提示信息 样例有 33 个台阶,蒜头君可以有以下 33 种走