在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
假设你正在爬楼梯。需要 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)=f(n-1)+f(n-2),竟然超时 class Solution { func climbStairs(_ n: Int) -> Int { if n==1 { return 1 } if n==2 { return 2 } return self.climbStairs(n-1) + self.climbStairs(n-2) } }
思路二:动态规划 class Solution { func climbStairs(_ n: Int) -> Int {if n==1 { return 1 } if n==2 { return 2 } var result:[Int] = Array(repeating: 0, count: n) result[0]=1 result[1]=2 for i in 2..<result.count { result[i] = result[i-1] + result[i-2] } return result[n-1] } }
来源:力扣(LeetCode) |
请发表评论