Skip to content

Commit ef06b3d

Browse files
committed
Added Climbing Stairs solution (LeetCode #70)
1 parent 4ec71a3 commit ef06b3d

1 file changed

Lines changed: 24 additions & 40 deletions

File tree

Lines changed: 24 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,26 @@
1-
#!/usr/bin/env python3
2-
3-
4-
def climb_stairs(number_of_steps: int) -> int:
5-
"""
6-
LeetCdoe No.70: Climbing Stairs
7-
Distinct ways to climb a number_of_steps staircase where each time you can either
8-
climb 1 or 2 steps.
9-
10-
Args:
11-
number_of_steps: number of steps on the staircase
12-
13-
Returns:
14-
Distinct ways to climb a number_of_steps staircase
15-
16-
Raises:
17-
AssertionError: number_of_steps not positive integer
18-
19-
>>> climb_stairs(3)
20-
3
21-
>>> climb_stairs(1)
22-
1
23-
>>> climb_stairs(-7) # doctest: +ELLIPSIS
24-
Traceback (most recent call last):
25-
...
26-
AssertionError: number_of_steps needs to be positive integer, your input -7
27-
"""
28-
assert isinstance(number_of_steps, int) and number_of_steps > 0, (
29-
f"number_of_steps needs to be positive integer, your input {number_of_steps}"
30-
)
31-
if number_of_steps == 1:
32-
return 1
33-
previous, current = 1, 1
34-
for _ in range(number_of_steps - 1):
35-
current, previous = current + previous, current
36-
return current
37-
38-
1+
"""
2+
Climbing Stairs Problem
3+
LeetCode #70
4+
Author: Noorin Rahila
5+
"""
6+
7+
class Solution:
8+
def climbStairs(self, n: int) -> int:
9+
a = 1
10+
b = 1
11+
if n == 0:
12+
return 0
13+
elif n == 1:
14+
return 1
15+
else:
16+
for i in range(1, n):
17+
c = a + b
18+
a = b
19+
b = c
20+
return b
21+
22+
# Example usage
3923
if __name__ == "__main__":
40-
import doctest
24+
s = Solution()
25+
print(s.climbStairs(5)) # Output: 8
4126

42-
doctest.testmod()

0 commit comments

Comments
 (0)