{ "question_id": 70, "question_title": "爬楼梯", "difficulty": "简单", "question_content": "

假设你正在爬楼梯。需要 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 阶
", "topic_link": "https://bbs.csdn.net/topics/600470125", "cpp": "#include \nusing namespace std;\nclass Solution\n{\npublic:\n\tint climbStairs(int n)\n\t{\n\t\tint a = 1;\n\t\tint b = 2;\n\t\tint c = 0;\n\t\tfor (int i = 3; i <= n; i++)\n\t\t{\n\t\t\tc = a + b;\n\t\t\ta = b;\n\t\t\tb = c;\n\t\t}\n\t\treturn n == 1 ? a : (n == 2 ? b : c);\n\t}\n};", "java": "class Solution {\n\tpublic int climbStairs(int n) {\n\t\tint[] num = new int[n + 1];\n\t\tnum[0] = 1;\n\t\tnum[1] = 1;\n\t\tfor (int i = 2; i <= n; i++) {\n\t\t\tnum[i] = num[i - 1] + num[i - 2];\n\t\t}\n\t\treturn num[n];\n\t}\n}\n", "js": "", "python": "class Solution(object):\n\tdef climbStairs(self, n):\n\t\tif n <= 1:\n\t\t\treturn 1\n\t\tdp = [1] * 2\n\t\tfor i in range(2, n + 1):\n\t\t\tdp[1], dp[0] = dp[1] + dp[0], dp[1]\n\t\treturn dp[1]\n# %%\ns = Solution()\nprint(s.climbStairs(2))", "status": 1, "keywords": "记忆化搜索,数学,动态规划", "license": { "cpp": "https://github.com/begeekmyfriend/leetcode", "python": "https://github.com/qiyuangong/leetcode", "java": "https://github.com/zhangyu345293721/leetcode" }, "notebook": { "cpp": "https://codechina.csdn.net/csdn/csdn-daily-code/-/jupyter/master/data/notebook/leetcode/ipynb/69/69_cpp.ipynb?type=file", "python": "https://codechina.csdn.net/csdn/csdn-daily-code/-/jupyter/master/data/notebook/leetcode/ipynb/69/69_python.ipynb?type=file", "java": "https://codechina.csdn.net/csdn/csdn-daily-code/-/jupyter/master/data/notebook/leetcode/ipynb/69/69_java.ipynb?type=file" }, "notebook_enable": 1 }