From 7ed65b0a1e47aeb961f10ae769d3d808998d5af8 Mon Sep 17 00:00:00 2001 From: Rutikpatil0123 <71816232+Rutikpatil0123@users.noreply.github.com> Date: Fri, 28 Apr 2023 23:04:15 +0530 Subject: [PATCH] Add climbing stairs (#4168) --- .../dynamicprogramming/ClimbingStairs.java | 30 +++++++++++++++++++ .../dynamicprogramming/climbStairsTest.java | 24 +++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 src/main/java/com/thealgorithms/dynamicprogramming/ClimbingStairs.java create mode 100644 src/test/java/com/thealgorithms/dynamicprogramming/climbStairsTest.java diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/ClimbingStairs.java b/src/main/java/com/thealgorithms/dynamicprogramming/ClimbingStairs.java new file mode 100644 index 000000000..376a6532c --- /dev/null +++ b/src/main/java/com/thealgorithms/dynamicprogramming/ClimbingStairs.java @@ -0,0 +1,30 @@ +package com.thealgorithms.dynamicprogramming; + +/* A DynamicProgramming solution for Climbing Stairs' problem Returns the + distinct ways can you climb to the staircase by either climbing 1 or 2 steps. + + Link : https://medium.com/analytics-vidhya/leetcode-q70-climbing-stairs-easy-444a4aae54e8 +*/ +public class ClimbingStairs { + + public static int numberOfWays(int n) { + + if(n == 1 || n == 0){ + return n; + } + int prev = 1; + int curr = 1; + + int next; + + for(int i = 2; i <= n; i++){ + next = curr+prev; + prev = curr; + + curr = next; + } + + return curr; + + } +} diff --git a/src/test/java/com/thealgorithms/dynamicprogramming/climbStairsTest.java b/src/test/java/com/thealgorithms/dynamicprogramming/climbStairsTest.java new file mode 100644 index 000000000..bc6b4adb8 --- /dev/null +++ b/src/test/java/com/thealgorithms/dynamicprogramming/climbStairsTest.java @@ -0,0 +1,24 @@ +package com.thealgorithms.dynamicprogramming; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + + +public class climbStairsTest { + + @Test + void climbStairsTestForTwo(){assertEquals(2, ClimbingStairs.numberOfWays(2));} + + @Test + void climbStairsTestForZero(){assertEquals(0, ClimbingStairs.numberOfWays(0));} + + @Test + void climbStairsTestForOne(){assertEquals(1, ClimbingStairs.numberOfWays(1));} + + @Test + void climbStairsTestForFive(){assertEquals(8, ClimbingStairs.numberOfWays(5));} + + @Test + void climbStairsTestForThree(){assertEquals(3, ClimbingStairs.numberOfWays(3));} +}