From 784b8a86980d7e87970c3d1f634d318871f1b7e1 Mon Sep 17 00:00:00 2001 From: marina <138340846+bt3gl-cryptographer@users.noreply.github.com> Date: Mon, 7 Aug 2023 16:55:25 -0700 Subject: [PATCH] Update climbing_stairs.py --- dynamic_programming/climbing_stairs.py | 28 ++++++++++++-------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/dynamic_programming/climbing_stairs.py b/dynamic_programming/climbing_stairs.py index 30c2f18..b5074b0 100644 --- a/dynamic_programming/climbing_stairs.py +++ b/dynamic_programming/climbing_stairs.py @@ -10,38 +10,42 @@ In how many distinct ways can you climb to the top? def climb_stairs_o2n(n: int) -> int: + if n == 0 or n == 1: return 1 return climb_stairs_o2n(n-1) + climb_stairs_o2n(n-2) + +def climb_stairs_memoization(n: int) -> int: + + memo = {} - -def helper(n: int, memo: dict[int, int]) -> int: + def helper(n: int, memo: dict[int, int]) -> int: if n == 0 or n == 1: return 1 if n not in memo: memo[n] = helper(n-1, memo) + helper(n-2, memo) return memo[n] - -def climb_stairs_memoization(n: int) -> int: - memo = {} - return helper(n, memo) - + + return helper(n, memo) def climb_stairs_optimized(n: int) -> int: + if n == 0 or n == 1: return 1 prev, curr = 1, 1 + for i in range(2, n+1): temp = curr curr = prev + curr prev = temp + return curr - def climb_stairs_tabulation(n: int) -> int: + if n == 0 or n == 1: return 1 @@ -50,11 +54,5 @@ def climb_stairs_tabulation(n: int) -> int: for i in range(2, n+1): dp[i] = dp[i-1] + dp[i-2] + return dp[n] - - -if __name__ == "__main__": - print(climb_stairs_o2n(4)) - print(climb_stairs_memoization(4)) - print(climb_stairs_optimized(4)) - print(climb_stairs_tabulation(4))