Files
leetcode/apps/docs/content/(05-decision-space)/1d-dynamic-programming/(problems)/70_climbing-stairs.mdx
T

47 lines
1.1 KiB
Plaintext

---
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"
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
```