水leetcode 爬楼梯

public class Solution {
public int climbStairs(int n) {
if(n==1) return 1;
if(n==2) return 2;
int pre=1;
int cur=2;
for(int i=3;i<=n;i++)
{
int tem=pre;
pre=cur;
cur=pre+tem;

}
return cur;

// else return climbStairs(n-1)+climbStairs(n-2);

}
}

水leetcode 爬楼梯,布布扣,bubuko.com

时间: 2024-10-24 06:25:14

水leetcode 爬楼梯的相关文章

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

LeetCode | 0070. Climbing Stairs爬楼梯【Python】

LeetCode 0070. Climbing Stairs爬楼梯[Easy][Python][动态规划] Problem LeetCode You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? Note: Given n

LeetCode Climbing Stairs 爬楼梯

递归法(TLE代码): 1 class Solution { 2 public: 3 int climbStairs(int n) { 4 if(n==0) 5 return 1; 6 if(n<0) 7 return 0; 8 return (climbStairs(n-1)+climbStairs(n-2)); 9 } 10 }; 动态规划法: 1 class Solution { 2 public: 3 int climbStairs(int n) { 4 if(n==1) return

[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 简单】第十八题 爬楼梯

假设你正在爬楼梯.需要 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(object): def climbStairs

#动态规划 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