diff --git a/contains-duplicate/hsskey.js b/contains-duplicate/hsskey.js new file mode 100644 index 000000000..87abbf859 --- /dev/null +++ b/contains-duplicate/hsskey.js @@ -0,0 +1,7 @@ +/** + * @param {number[]} nums + * @return {boolean} + */ +var containsDuplicate = function(nums) { + return nums.length !== new Set([...nums]).size +}; diff --git a/house-robber/hsskey.js b/house-robber/hsskey.js new file mode 100644 index 000000000..1fa274fb6 --- /dev/null +++ b/house-robber/hsskey.js @@ -0,0 +1,19 @@ +/** + * @param {number[]} nums + * @return {number} + */ +var rob = function(nums) { + if (nums.length === 0) return 0; + if (nums.length === 1) return nums[0]; + + const dp = new Array(nums.length); + + dp[0] = nums[0]; + dp[1] = Math.max(nums[0], nums[1]); + + for (let i = 2; i < nums.length; i++) { + dp[i] = Math.max(nums[i] + dp[i - 2], dp[i - 1]); + } + + return dp[nums.length - 1]; +}; diff --git a/longest-consecutive-sequence/hsskey.js b/longest-consecutive-sequence/hsskey.js new file mode 100644 index 000000000..86c8ef700 --- /dev/null +++ b/longest-consecutive-sequence/hsskey.js @@ -0,0 +1,23 @@ +/** + * @param {number[]} nums + * @return {number} + */ +var longestConsecutive = function(nums) { + const numSet = new Set(nums); + let maxLength = 0; + + for (const num of nums) { + if (!numSet.has(num - 1)) { + let currentNum = num; + let currentLength = 1; + + while (numSet.has(currentNum + 1)) { + currentNum++; + currentLength++; + } + maxLength = Math.max(maxLength, currentLength); + } + } + + return maxLength; +}; diff --git a/top-k-frequent-elements/hsskey.js b/top-k-frequent-elements/hsskey.js new file mode 100644 index 000000000..00b42f9e9 --- /dev/null +++ b/top-k-frequent-elements/hsskey.js @@ -0,0 +1,22 @@ +/** + * @param {number[]} nums + * @param {number} k + * @return {number[]} + */ +var topKFrequent = function(nums, k) { + const map = new Map() + + for(let i = 0; i < nums.length; i++) { + if(map.has(nums[i])) { + const prevVal = map.get(nums[i]) + map.set(nums[i], prevVal + 1) + } else { + map.set(nums[i], 1) + } + } + + const result = [...map.entries()].sort((a, b) => b[1] - a[1]).slice(0, k).map((item) => { + return item[0] + }) + return result +}; diff --git a/two-sum/hsskey.js b/two-sum/hsskey.js new file mode 100644 index 000000000..20910baf7 --- /dev/null +++ b/two-sum/hsskey.js @@ -0,0 +1,17 @@ +/** + * @param {number[]} nums + * @param {number} target + * @return {number[]} + */ +var twoSum = function(nums, target) { + const map = new Map() + + for(let i = 0; i < nums.length; i++) { + const needNum = target - nums[i] + if(map.has(needNum)) { + return [i, map.get(needNum)] + } + + map.set(nums[i], i) + } +};