-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathClimbingStairs.js
More file actions
38 lines (33 loc) · 957 Bytes
/
Copy pathClimbingStairs.js
File metadata and controls
38 lines (33 loc) · 957 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
"use strict"
/**
* @param {number} n
* @return {number}
*/
//Note: this appears to be a disguised fibonacci sequence: number is sum of previous two in sequence
//Recursive version works, but times out...need iteration solution
// var climbStairs = function (n) {
// if(n === 1){
// return 1
// }
// else if (n === 2)
// return 2;
// else
// return climbStairs(n - 1) + climbStairs(n-2);
// };
//Iterative Solution
/* Results
Runtime: 63 ms, faster than 80.75% of JavaScript online submissions for Climbing Stairs.
Memory Usage: 41.5 MB, less than 95.25% of JavaScript online submissions for Climbing Stairs.
*/
var climbStairs = function (n) {
let last = 0, middle = 1, first = 0;
for (let x = 1; x <= n; x++) {
first = middle + last;
last = middle;
middle = first;
}
return first;
};
//Testing
for (let x = 1; x <= 45; x++)
console.log(`${x} = ${climbStairs(x)}`);