#70.Climbing Stairs [LeetCode Grind 75 in Java]

[Problem Link] https://leetcode.com/problems/climbing-stairs/

class Solution {

    //memoization solution
    //distinct ways to reach ith step
    public int distinctWays(int i , int[] dp){
        if(i == 0 || i == 1) return 1;
        if(dp[i] != -1) return dp[i];

        int one = distinctWays(i - 1 , dp);
        int two = distinctWays(i - 2 , dp);

        return dp[i] = one + two;
    }

    public int climbStairs(int n) {
        int[] dp = new int[n + 1];
        Arrays.fill(dp , -1);

        return distinctWays(n , dp);
    }
}