mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-07 17:56:02 +08:00
Improve comments & readability in ClimbingStairs.java (#5498)
This commit is contained in:
@ -1,31 +1,55 @@
|
||||
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
|
||||
*/
|
||||
/*
|
||||
* A dynamic programming solution for the "Climbing Stairs" problem.
|
||||
* Returns the no. of distinct ways to climb to the top
|
||||
* of a staircase when you can climb either 1 or 2 steps at a time.
|
||||
*
|
||||
* For example, if there are 5 steps, the possible ways to climb the
|
||||
* staircase are:
|
||||
* 1. 1-1-1-1-1
|
||||
* 2. 1-1-1-2
|
||||
* 3. 1-2-1-1
|
||||
* 4. 2-1-1-1
|
||||
* 5. 2-2-1
|
||||
* 6. 1-1-2-1
|
||||
* 7. 1-2-2
|
||||
* 8. 2-1-2
|
||||
* Ans: 8 ways
|
||||
*/
|
||||
public final class ClimbingStairs {
|
||||
|
||||
private ClimbingStairs() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the no. of distinct ways to climb a staircase with n steps.
|
||||
*
|
||||
* @param n the no. of steps in the staircase (non-negative integer)
|
||||
* @return the no. of distinct ways to climb to the top
|
||||
* - Returns 0 if n is 0 (no steps to climb).
|
||||
* - Returns 1 if n is 1 (only one way to climb).
|
||||
* - For n > 1, it returns the total no. of ways to climb.
|
||||
*/
|
||||
public static int numberOfWays(int n) {
|
||||
|
||||
// Base case: if there are no steps or only one step, return n.
|
||||
if (n == 1 || n == 0) {
|
||||
return n;
|
||||
}
|
||||
int prev = 1;
|
||||
int curr = 1;
|
||||
|
||||
int next;
|
||||
int prev = 1; // Ways to reach the step before the current one (step 1)
|
||||
int curr = 1; // Ways to reach the current step (step 2)
|
||||
int next; // Total ways to reach the next step
|
||||
|
||||
for (int i = 2; i <= n; i++) {
|
||||
for (int i = 2; i <= n; i++) { // step 2 to n
|
||||
next = curr + prev;
|
||||
prev = curr;
|
||||
|
||||
// Move the pointers to the next step
|
||||
prev = curr;
|
||||
curr = next;
|
||||
}
|
||||
|
||||
return curr;
|
||||
return curr; // Ways to reach the nth step
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user