首页 > 其他分享 >爬楼梯

爬楼梯

时间:2022-10-27 13:35:06浏览次数:51  
标签:f1 f2 return int sum climbStairs 爬楼梯


问题描述

假设你正在爬楼梯。需要 n 步你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数。

示例 1:

输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1. 1 步 + 1 步
2. 2 步

解决方案

f(n)=f(n−1)+f(n−2) f ( n ) = f ( n − 1 ) + f ( n − 2 ) ,斐波那契数列。

1

递归,超出时间限制(21 / 45 个通过测试用例)。

class Solution {
int sum=0;
public int climbStairs(int n) {
if(n==1) {
return 1;
}else if(n==2) {
return 2;
}
return sum+climbStairs(n-1)+climbStairs(n-2);
}
}

2

迭代:

class Solution
public int climbStairs(int n) {
int sum=0;
if(n<3&&n>=0) {
sum= n;
}
int f1=1,f2=2;
for(int i=3;i<=n;i++) {
sum=f1+f2;
f1=f2;
f2=sum;
}
return sum;
}
}

3

使用斐波那契数列通项公式。推导过程​​参考链接​​​。
a(n)=15√[(1+5√2)n−(1−5√2)n] a ( n ) = 1 5 [ ( 1 + 5 2 ) n − ( 1 − 5 2 ) n ] ,

class Solution {
public int climbStairs(int n) {
double p=Math.sqrt(5);
double sum=1/p*(
Math.pow((1+p)/2, n+1)-Math.pow((1-p)/2, n+1)
);
return (int) sum;
}
}


标签:f1,f2,return,int,sum,climbStairs,爬楼梯
From: https://blog.51cto.com/u_15847885/5800891

相关文章

  • DP--爬楼梯1
    题目描述前几个月放映的头号玩家简直火得不能再火了,作为一个探索终极AI的研究人员,月神自然去看了此神剧。由于太过兴奋,晚上月神做了一个奇怪的梦,月神梦见自己掉入了一个被施......
  • 746 使用最小花费爬楼梯
    题目746使用最小花费爬楼梯给你一个整数数组cost,其中cost[i]是从楼梯第i个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以......
  • #yyds干货盘点# 动态规划专题:最小花费爬楼梯
    1.简述:描述给定一个整数数组  ,其中  是从楼梯第个台阶向上爬需要支付的费用,下标从0开始。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为0或下......
  • 爬楼梯
    假设你正在爬楼梯。需要n 阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?示例1:输入:n=2输出:2解释:有两种方法可以爬到楼顶......
  • 使用最小花费爬楼梯
    LeetCode75学习计划适用于想为技术面试做准备但不确定应该聚焦于哪些题目的用户。学习计划中的题目都是经过精心挑选的,Level1和Level2学习计划是为初级用户和中级用户......
  • 746.min-cost-climbing-stairs 使用最小花费爬楼梯
    题目描述746.使用最小花费爬楼梯解题思路相当于爬楼梯的进阶版,递推关系变复杂了一些,但本质没有变。\(a_n=min(a_{n-1}+cost[i-1],a_{n-2}+cost[i-2])\)......
  • 70.climbing-stairs 爬楼梯
    题目描述70.爬楼梯解题思路本质上与斐波那契数是一样的:\(a_n=a_{n-1}+a_{n-2}\)构建for循环来遍历。代码classSolution{public:intclimbStairs(i......
  • LeetCode 746 使用最小花费爬楼梯
    constintN=1000;classSolution{public:intdp[N];intminCostClimbingStairs(vector<int>&cost){dp[0]=cost[0];dp[1]=cost[1]......
  • LeetCode 70 爬楼梯
    动态规划constintN=50;classSolution{public:intdp[N];intclimbStairs(intn){dp[0]=1;dp[1]=1;for(int......
  • 1. 斐波那契数 爬楼梯 使用最少花费爬楼梯
    1.斐波那契数版本一:一维数组记录型classSolution{public:intfib(intn){if(n<=1)returnn;std::vector<int>dp(n+1);......