diff --git a/3sum/moonjonghoo.js b/3sum/moonjonghoo.js new file mode 100644 index 000000000..b20d53631 --- /dev/null +++ b/3sum/moonjonghoo.js @@ -0,0 +1,36 @@ +/** + * @param {number[]} nums + * @return {number[][]} + */ + +var threeSum = function (nums) { + let result = []; + nums.sort((a, b) => a - b); + + for (let i = 0; i < nums.length - 2; i++) { + if (i > 0 && nums[i] === nums[i - 1]) continue; + + let left = i + 1; + let right = nums.length - 1; + + while (left < right) { + const sum = nums[i] + nums[left] + nums[right]; + + if (sum === 0) { + result.push([nums[i], nums[left], nums[right]]); + + while (left < right && nums[left] === nums[left + 1]) left++; + while (left < right && nums[right] === nums[right - 1]) right--; + + left++; + right--; + } else if (sum < 0) { + left++; + } else { + right--; + } + } + } + + return result; +}; diff --git a/climbing-stairs/moonjonghoo.js b/climbing-stairs/moonjonghoo.js new file mode 100644 index 000000000..ed1f32ad8 --- /dev/null +++ b/climbing-stairs/moonjonghoo.js @@ -0,0 +1,16 @@ +/** + * @param {number} n + * @return {number} + */ +var climbStairs = function (n) { + let dp = new Array(n + 1); + dp[1] = 1; + dp[2] = 2; + for (let i = 3; i <= n; i++) { + dp[i] = dp[i - 1] + dp[i - 2]; + } + return dp[n]; +}; + +console.log(climbStairs(2)); +console.log(climbStairs(3)); diff --git a/product-of-array-except-self/moonjonghoo.js b/product-of-array-except-self/moonjonghoo.js new file mode 100644 index 000000000..d65eb5aea --- /dev/null +++ b/product-of-array-except-self/moonjonghoo.js @@ -0,0 +1,22 @@ +/** + * @param {number[]} nums + * @return {number[]} + */ +var productExceptSelf = function (nums) { + let answer = []; + answer[0] = 1; + + for (let i = 1; i < nums.length; i++) { + answer[i] = answer[i - 1] * nums[i - 1]; + } + let right = 1; + + for (let i = nums.length - 1; i >= 0; i--) { + answer[i] *= right; + right *= nums[i]; + } + return answer; +}; + +productExceptSelf([1, 2, 3, 4]); +productExceptSelf([-1, 1, 0, -3, 3]); diff --git a/valid-anagram/moonjonghoo.js b/valid-anagram/moonjonghoo.js new file mode 100644 index 000000000..3a1a821cb --- /dev/null +++ b/valid-anagram/moonjonghoo.js @@ -0,0 +1,29 @@ +/** + * @param {string} s + * @param {string} t + * @return {boolean} + */ +var isAnagram = function (s, t) { + if (s.length !== t.length) return false; + let hashMap = new Map(); + for (let i = 0; i < s.length; i++) { + if (hashMap.has(s[i])) { + hashMap.set(s[i], hashMap.get(s[i]) + 1); + } else { + hashMap.set(s[i], 1); + } + } + for (let i = 0; i < t.length; i++) { + if (hashMap.has(t[i])) { + hashMap.set(t[i], hashMap.get(t[i]) - 1); + if (hashMap.get(t[i]) === 0) { + hashMap.delete(t[i]); + } + } + } + + if (hashMap.size === 0) return true; + else return false; +}; + +isAnagram("anagram", "nagaram");