diff --git a/contains-duplicate/moonjonghoo.js b/contains-duplicate/moonjonghoo.js new file mode 100644 index 000000000..0da5c3a60 --- /dev/null +++ b/contains-duplicate/moonjonghoo.js @@ -0,0 +1,12 @@ +/** + * @param {number[]} nums + * @return {boolean} + */ +var containsDuplicate = function (nums) { + let nums_length = nums.length; + let hash = new Set(nums); + let hash_legnth = hash.size; + return nums_length === hash_legnth ? false : true; +}; + +containsDuplicate([1, 2, 3, 1]); diff --git a/house-robber/moonjonghoo.js b/house-robber/moonjonghoo.js new file mode 100644 index 000000000..dad457e69 --- /dev/null +++ b/house-robber/moonjonghoo.js @@ -0,0 +1,15 @@ +var rob = function (nums) { + const n = nums.length; + if (n === 0) return 0; + if (n === 1) return nums[0]; + + let dp = new Array(n).fill(0); + dp[0] = nums[0]; + dp[1] = Math.max(nums[0], nums[1]); + + for (let i = 2; i < n; i++) { + dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i]); + } + + return dp[n - 1]; +}; diff --git a/longest-consecutive-sequence/moonjonghoo.js b/longest-consecutive-sequence/moonjonghoo.js new file mode 100644 index 000000000..76fc42fa7 --- /dev/null +++ b/longest-consecutive-sequence/moonjonghoo.js @@ -0,0 +1,21 @@ +var longestConsecutive = function (nums) { + const Set = new Set(nums); + let maxLength = 0; + + for (let num of Set) { + if (!Set.has(num - 1)) { + let currentNum = num; + let count = 1; + + // 연속된 숫자 탐색 + while (Set.has(currentNum + 1)) { + currentNum++; + count++; + } + + maxLen = Math.max(maxLength, count); + } + } + + return maxLength; +}; diff --git a/top-k-frequent-elements/moonjonghoo.js b/top-k-frequent-elements/moonjonghoo.js new file mode 100644 index 000000000..a5be37cc5 --- /dev/null +++ b/top-k-frequent-elements/moonjonghoo.js @@ -0,0 +1,25 @@ +/** + * @param {number[]} nums + * @param {number} k + * @return {number[]} + */ +var topKFrequent = function (nums, k) { + let map = new Map(); + + for (let num of nums) { + map.set(num, (map.get(num) || 0) + 1); + } + + let freqArr = Array.from(map.entries()); + freqArr.sort((a, b) => b[1] - a[1]); + + let result = []; + for (let i = 0; i < k; i++) { + result.push(freqArr[i][0]); + } + + return result; +}; + +topKFrequent([1, 1, 1, 2, 2, 3], 2); +topKFrequent([1], 1); diff --git a/two-sum/moonjonghoo.js b/two-sum/moonjonghoo.js new file mode 100644 index 000000000..300ef6ce5 --- /dev/null +++ b/two-sum/moonjonghoo.js @@ -0,0 +1,18 @@ +/** + * @param {number[]} nums + * @param {number} target + * @return {number[]} + */ +var twoSum = function (nums, target) { + let map = new Map(); + for (let i = 0; i < nums.length; i++) { + const complement = target - nums[i]; + if (map.has(complement)) { + retuirn[(map.get(complement), i)]; + } + map.set(nums[i], i); + } +}; + +console.log(twoSum([2, 7, 11, 15], 9)); +console.log(twoSum([3, 2, 4], 6));