diff --git a/climbing-stairs/prgmr99.js b/climbing-stairs/prgmr99.js new file mode 100644 index 0000000000..65b6936f2a --- /dev/null +++ b/climbing-stairs/prgmr99.js @@ -0,0 +1,23 @@ +/** + * @param {number} n + * @return {number} + */ +var climbStairs = function (n) { + const memo = {}; + + function fibo(num, memo) { + if (num === 1) return 1; + if (num === 2) return 2; + + if (memo[num]) { + return memo[num]; + } + + const result = fibo(num - 1, memo) + fibo(num - 2, memo); + memo[num] = result; + + return result; + } + + return fibo(n, memo); +}; diff --git a/valid-anagram/prgmr99.js b/valid-anagram/prgmr99.js new file mode 100644 index 0000000000..5ecc11f442 --- /dev/null +++ b/valid-anagram/prgmr99.js @@ -0,0 +1,33 @@ +/** + * @param {string} s + * @param {string} t + * @return {boolean} + */ +var isAnagram = function (s, t) { + const stringMap = new Map(); + + if (s.length !== t.length) return false; + + for (let i = 0; i < s.length; i++) { + const currentValue = stringMap.get(s[i]); + + if (currentValue) { + stringMap.set(s[i], currentValue + 1); + } else { + stringMap.set(s[i], 1); + } + } + + for (let i = 0; i < t.length; i++) { + const currentValue = t[i]; + const currentValueInStringMap = stringMap.get(currentValue); + + if (currentValueInStringMap) { + stringMap.set(currentValue, currentValueInStringMap - 1); + } else { + return false; + } + } + + return true; +};