From 78b50806e3e8380bb616afd7276696aacb405244 Mon Sep 17 00:00:00 2001 From: Vasily Guzov Date: Thu, 28 Nov 2024 00:36:02 +0300 Subject: [PATCH] [HAI] twoSumHashtable etalon by Max --- lib/twoSumHashTable/twoSumHashTable.ts | 50 ++++++++++++++++---------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/lib/twoSumHashTable/twoSumHashTable.ts b/lib/twoSumHashTable/twoSumHashTable.ts index 3f85ef9..9462aab 100644 --- a/lib/twoSumHashTable/twoSumHashTable.ts +++ b/lib/twoSumHashTable/twoSumHashTable.ts @@ -1,24 +1,38 @@ -export function twoSumHashTable(nums: number[], target: number): number[] { - const result: number[] = []; - const hashTable: Record = {}; - let i = 0; +// export function twoSumHashTable(nums: number[], target: number): number[] { +// const result: number[] = []; +// const hashTable: Record = {}; +// let i = 0; - while (i < nums.length) { - let key = nums[i]; - let val = i; - let searchKey = String(target - key); +// while (i < nums.length) { +// let key = nums[i]; +// let val = i; +// let searchKey = String(target - key); - if (searchKey in hashTable) { - result.push(hashTable[searchKey]); - result.push(val); - break; - } else { - hashTable[key] = val; - } +// if (searchKey in hashTable) { +// result.push(hashTable[searchKey]); +// result.push(val); +// break; +// } else { +// hashTable[key] = val; +// } - i++ - } +// i++ +// } + +// return result; +// }; - return result; +export function twoSumHashTable(nums: number[], target: number): number[] { + let usedNums = {}; + + for (let idx = 0; idx < nums.length; idx++) { + let secondNum = nums[idx]; + let firstNum = target - secondNum; + if (firstNum in usedNums) { + return [usedNums[firstNum], idx]; + } + usedNums[secondNum] = idx; + } + return []; };