From 60cd6578c3e48a53ab6ff389ca9ceb557c20850d Mon Sep 17 00:00:00 2001 From: hsskey Date: Mon, 7 Apr 2025 21:29:15 +0900 Subject: [PATCH 1/5] valid-anagram solved --- valid-anagram/hsskey.js | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 valid-anagram/hsskey.js diff --git a/valid-anagram/hsskey.js b/valid-anagram/hsskey.js new file mode 100644 index 000000000..1c2aefda0 --- /dev/null +++ b/valid-anagram/hsskey.js @@ -0,0 +1,38 @@ +/** + * @param {string} s + * @param {string} t + * @return {boolean} + */ +var isAnagram = function(s, t) { + if(s.length !== t.length) { + return false + } + const sMap = new Map() + const tMap = new Map() + + for(let i = 0; i < s.length; i++) { + if(sMap.has(s[i])) { + const prevVal = sMap.get(s[i]) + sMap.set(s[i], prevVal + 1) + } else { + sMap.set(s[i], 1) + } + } + + for(let i = 0; i < t.length; i++) { + if(tMap.has(t[i])) { + const prevVal = tMap.get(t[i]) + tMap.set(t[i], prevVal + 1) + } else { + tMap.set(t[i], 1) + } + } + + for(const[char, count] of sMap) { + if(!tMap.has(char) || tMap.get(char) !== count) { + return false + } + } + + return true +}; From a4874d3914c95804451e76c9c83b3712825b7065 Mon Sep 17 00:00:00 2001 From: hsskey Date: Tue, 8 Apr 2025 21:46:14 +0900 Subject: [PATCH 2/5] climbing-stairs solved --- climbing-stairs/hsskey.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 climbing-stairs/hsskey.js diff --git a/climbing-stairs/hsskey.js b/climbing-stairs/hsskey.js new file mode 100644 index 000000000..0fbf79f5b --- /dev/null +++ b/climbing-stairs/hsskey.js @@ -0,0 +1,19 @@ +/** + * @param {number} n + * @return {number} + */ +var climbStairs = function(n) { + if(n <= 2) { + return 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] +}; From fb3974b89f48ab15c35e6c48a8177a25ffb889ac Mon Sep 17 00:00:00 2001 From: hsskey Date: Wed, 9 Apr 2025 21:36:54 +0900 Subject: [PATCH 3/5] product-of-array-except-self solved --- product-of-array-except-self/hsskey.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 product-of-array-except-self/hsskey.js diff --git a/product-of-array-except-self/hsskey.js b/product-of-array-except-self/hsskey.js new file mode 100644 index 000000000..a93ba9220 --- /dev/null +++ b/product-of-array-except-self/hsskey.js @@ -0,0 +1,23 @@ +/** + * @param {number[]} nums + * @return {number[]} + */ +var productExceptSelf = function(nums) { + const n = nums.length + const result = Array(nums.length) + + let left = 1 + + for(let i = 0; i < n; i++) { + result[i] = left + left *= nums[i] + } + + let right = 1 + for(let i = n - 1; i >= 0; i--) { + result[i] *= right + right *= nums[i] + } + + return result +}; From 036de93cabf998dc8cacb34fab7ef87532e93cb9 Mon Sep 17 00:00:00 2001 From: hsskey Date: Thu, 10 Apr 2025 22:18:06 +0900 Subject: [PATCH 4/5] 3sum solved --- 3sum/hsskey.js | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 3sum/hsskey.js diff --git a/3sum/hsskey.js b/3sum/hsskey.js new file mode 100644 index 000000000..f8f9a4426 --- /dev/null +++ b/3sum/hsskey.js @@ -0,0 +1,40 @@ +/** + * @param {number[]} nums + * @return {number[][]} + */ +var threeSum = function(nums) { + const result = []; + const n = nums.length; + + if (n < 3) return result; + + nums.sort((a, b) => a - b); + + const uniqueTriplets = new Set(); + + for (let i = 0; i < n - 2; i++) { + if (nums[i] > 0) break; + + if (i > 0 && nums[i] === nums[i - 1]) continue; + + const target = -nums[i]; + const seen = new Set(); + + for (let j = i + 1; j < n; j++) { + const complement = target - nums[j]; + + if (seen.has(complement)) { + const triplet = [nums[i], complement, nums[j]].toString(); + + if (!uniqueTriplets.has(triplet)) { + uniqueTriplets.add(triplet); + result.push([nums[i], complement, nums[j]]); + } + } + + seen.add(nums[j]); + } + } + + return result; +}; From 0449874b223618bdbc1d32713016002fd693a26a Mon Sep 17 00:00:00 2001 From: hsskey Date: Fri, 11 Apr 2025 22:16:55 +0900 Subject: [PATCH 5/5] validate-binary-search-tree solved --- validate-binary-search-tree/hsskey.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 validate-binary-search-tree/hsskey.js diff --git a/validate-binary-search-tree/hsskey.js b/validate-binary-search-tree/hsskey.js new file mode 100644 index 000000000..1ae75f216 --- /dev/null +++ b/validate-binary-search-tree/hsskey.js @@ -0,0 +1,27 @@ +/** + * Definition for a binary tree node. + * function TreeNode(val, left, right) { + * this.val = (val===undefined ? 0 : val) + * this.left = (left===undefined ? null : left) + * this.right = (right===undefined ? null : right) + * } + */ +/** + * @param {TreeNode} root + * @return {boolean} + */ +var isValidBST = function(root) { + const dfs = (node, left = null, right = null) => { + if(!node) { + return true + } + + if((left !== null && node.val <= left) || (right !== null && node.val >= right)) { + return false + } + + return dfs(node.left, left, node.val) && dfs(node.right, node.val, right) + } + + return dfs(root) +};