http://www.shangxueba.com/jingyan/2927097.html
[原创]LeetCode-Climbing Stairs(爬楼梯)(Java)
Climbing Stairs(爬楼梯)
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?
假设你在爬一个楼梯,该楼梯有n阶,你有两种爬法,每次爬一阶或者两阶。请问你有多少种爬法到达楼梯顶部。
思路1:递归
给定一个数n,有两种途径到达n
一,从n-1处,爬一阶楼梯到达n
二,从n-2处,爬两阶楼梯到达n
符合典型的递归思想。
结束条件,当n=1时,只有一种爬法。当n=2时,有两种爬法2+0,1+1
代码:
public static int climbStairs(int n) {
if(n == 1)
return 1;
if(n == 2)
return 2;
return climbStairs(n - 1) + climbStairs(n - 2);
}
提交结果:
分析:当n=44时,由于递归的层数太多,需要的内存指数级递增。这也是递归的弊端。而且n越大弊端表现的越明显。
思路:爬楼梯就是裴波那契数列
补:裴波那契数列
斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
注:此时a1=0,a2=1,an=a(n-1)+a(n-2)(n>=2,n∈N*)
即:裴波那契数列的第n项的值是第n阶楼梯的爬法的种类数
public static int climbStairs(int n) {
int a = 0;
int b = 1;
int sum = 0;
for(int i = 1; i <= n; i++){
sum = a + b;
a = b;
b = sum;
}
return sum;
}
相关推荐
javascript js_leetcode题解之70-climbing-stairs.js
c语言入门 C语言_leetcode题解之70-climbing-stairs.c
走踏板LeetCode_70--爬楼梯 你正在爬楼梯。 需要n步才能到达顶部。 每次您可以爬 1 或 2 个台阶。 你可以通过多少种不同的方式登上顶峰? 注意:给定 n 将是一个正整数。 示例 1: 输入:2 输出:2 说明:登顶有两种...
c语言入门 c语言_leetcode题解之0070_climbing_stairs
c c语言_leetcode题解之0070_climbing_stairs.zip
leetcode 走踏板爬楼梯 你正在爬楼梯。 需要n步才能到达顶部。 每次您可以爬 1 或 2 个台阶。 你可以通过多少种不同的方式登上顶峰? 注意:给定 n 将是一个正整数。 示例 1: 输入:2 输出:2 解释:有两种方法可以...
- **2.1.18 Climbing Stairs** - 上楼梯问题,每次可以上1阶或2阶。 - 实现思路:动态规划,记录到达每一阶的方案数。 - **2.1.19 Gray Code** - 生成格雷编码序列。 - 实现思路:基于位运算的规律。 - **...
- Climbing Stairs: 假设你正在爬楼梯,需要n步你才能到达楼顶。每次你可以爬1或2个台阶。计算有多少种不同的方法可以爬到楼顶。 - Simplify Path: 给定一个表示文件系统的路径,请实现一个方法,以简化这个路径。 -...
走踏板爬楼梯 Leetcode 问题 70 你正在爬楼梯。 需要n步才能到达顶部。 每次您可以爬 1 或 2 个台阶。 你可以通过多少种不同的方式登上顶峰? 示例 1: Input: 2 Output: 2 Explanation: There are two ways to ...
leetcode-java leetcode刷题笔记 已做题目列表 1.Two Sum 3.Longest Substring Without Repeating Characters 5.Longest Palindromic Substring 20.Valid Parentheses 26.Remove Duplicates from Sorted Array 53....
《走楼梯问题——LeetCode中的Climbing Stairs》 在计算机科学和算法设计中,LeetCode是一个广受欢迎的在线平台,它提供了大量的编程题目,帮助开发者锻炼和提升编程技能。"走楼梯"(Climbing Stairs)是其中一道...
leetcode怎么销号 LeetCode-Solutions :green_heart:My own LeetCode solutions No. Problem LeetCode 力扣 Python Go Solution Difficulty Tag 0017 Letter Combinations of a Phone Number Medium 回溯、暴力 0034...
Stairs](./leetcode/动态规划-Climbing Stairs.java) [动态规划-Decode Ways](./leetcode/动态规划-Decode Ways.java) [动态规划-Distinct Subsequences](./leetcode/动态规划-Distinct Subsequences.java) [动态...
70.爬楼梯 (Climbing Stairs) 83.删除排序链表中的重复元素 (Remove Duplicates from Sorted List) 88.合并两个有序数组 (Merge Sorted Array) 100.相同的树 (Same Tree) 104.二叉树的最大深度 (Maximum Depth of ...
c++ C++_leetcode题解之746. Min Cost Climbing Stairs.cpp
cn.com/problems/container-with-most-water/)、《移动零》(https://leetcode-cn.com/problems/move-zeroes/)以及《爬楼梯》(https://leetcode-cn.com/problems/climbing-stairs/)。 2. 三数之和问题:寻找数组中三...
leetcode 答案 LeetCode-Trip LeetCode刷题代码,大佬勿入。 为一年后的研究生找工作准备 目标是BAT的算法岗哈哈哈哈哈 争取做到每日一更 嗯…… 19.10.22:鸽了这么久,我又回来了……主要在实验室天天没啥事,过于...
================ LeetCode ================动态编程1. Min Cost Climbing Stairs [746]2. Best Time to Buy and Sell Stock [121]3. Climbing Stairs [70]4. Maximum Subarray [53]5. House Robber [198]6. Range ...
70.爬楼梯 Climbing-Stairs 暴力递归,把所有可能的解法递归出来。 public class Sol_one { public int climbStairs(int n) { return climb_Stairs(0, n); } public int climb_Stairs(int i, int n) { if (i > n) { ...
本压缩包文件“c++-c++编程基础之leetcode题解第70题爬楼梯.zip”显然是针对LeetCode的第70题——"Climbing Stairs"(爬楼梯)的解决方案。这道题目属于动态规划问题,是C++初学者到进阶者常常会遇到的经典算法题。 ...