--- title: '70. Climbing Stairs' description: You are climbing a staircase. It takes n steps to reach the top icon: dot topics: - { name: "Math", slug: "math" } - { name: "Dynamic Programming", slug: "dynamic-programming" } - { name: "Memoization", slug: "memoization" } issue: "https://github.com/prdlk/leetcode/issues/157" companies: - { name: "Infosys", period: "Thirty Days", frequency: 80.2 } - { name: "Bloomberg", period: "Thirty Days", frequency: 69.8 } - { name: "Intuit", period: "Thirty Days", frequency: 66.1 } - { name: "Ola Cabs", period: "Thirty Days", frequency: 65.6 } - { name: "Meta", period: "Thirty Days", frequency: 53.8 } - { name: "Amazon", period: "Thirty Days", frequency: 48.9 } - { name: "Google", period: "Thirty Days", frequency: 36.7 } - { name: "Microsoft", period: "Three Months", frequency: 48.3 } - { name: "tcs", period: "Three Months", frequency: 47.7 } - { name: "Deloitte", period: "Six Months", frequency: 81 } sidebar: label: 'Climbing Stairs' badge: 'Easy' --- ### Example 1: - Input: `n = 2` - Output: `2` - Explanation: There are two ways to climb to the top. `1`. `1` step + `1` step `2`. `2` steps ### Example 2: - Input: `n = 3` - Output: `3` - Explanation: There are three ways to climb to the top. `1`. `1` step + `1` step + `1` step `2`. `1` step + `2` steps `3`. `2` steps + `1` step ### Constraints: - `1 <= n <= 45` ## Solution ```py class Solution: def climbStairs(self, n: int) -> int: if n == 1: return 1 if n == 2: return 2 first, second = 1, 2 for _ in range(3, n + 1): third = first + second first, second = second, third return second ```