code.ashish.me

Atom feed

Recently added: 128 Longest Consecutive Sequence, 347 Top K Frequent Elements, 045 Jump Game 2, 228 Summary Ranges, 219 Contains Duplicate 2

070 Climbing Stairs

/**
 * 
 * Ashish Patel
 * e: ashishsushilPatel@gmail.com
 * w: https://ashish.me
 *
 */

/* 
* You are climbing a stair case. It takes n steps to reach to the top.
* Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
* 
* Note: Given n will be a positive integer.
* 
* Example 1:
* 
* Input: 2
* Output: 2
* Explanation: There are two ways to climb to the top.
* 1. 1 step + 1 step
* 2. 2 steps
* Example 2:
* 
* Input: 3
* Output: 3
* Explanation: There are three ways to climb to the top.
* 1. 1 step + 1 step + 1 step
* 2. 1 step + 2 steps
* 3. 2 steps + 1 step
*/

//0,1,2,3
function climbingStairs(n) {
  if (n <= 3) {
    return n
  }
  let result = [1, 2, 3]
  for (let index = 3; index < n; index++) {
    result.push(result[index - 1] + result[index - 2])
  }
  return result[result.length - 1]
}

test('climbing Stairs', () => {
  expect(climbingStairs(3)).toEqual(3)
  expect(climbingStairs(4)).toEqual(5)
});

Created 2020-03-25T18:07:18+00:00 · Edit