From 8bdba1f2f2ef0ee2d855361c5efed5ecd17e0cef Mon Sep 17 00:00:00 2001 From: me Date: Wed, 28 Jan 2026 12:57:58 +0300 Subject: [PATCH] add Two Sum task --- Two Sum/Solution.java | 35 ++++++++++++++++++++++++++++++ Two Sum/a.out | Bin 0 -> 56344 bytes Two Sum/solution.c | 48 ++++++++++++++++++++++++++++++++++++++++++ Two Sum/solution.cpp | 44 ++++++++++++++++++++++++++++++++++++++ Two Sum/solution.py | 10 +++++++++ 5 files changed, 137 insertions(+) create mode 100644 Two Sum/Solution.java create mode 100755 Two Sum/a.out create mode 100644 Two Sum/solution.c create mode 100644 Two Sum/solution.cpp create mode 100644 Two Sum/solution.py diff --git a/Two Sum/Solution.java b/Two Sum/Solution.java new file mode 100644 index 0000000..3113eb3 --- /dev/null +++ b/Two Sum/Solution.java @@ -0,0 +1,35 @@ +import java.util.Arrays; +import java.util.HashMap; + +class Solution { + public static void main(String[] args) { + int[] test1 = {2, 7, 11, 15}; int target1 = 9; + int[] test2 = {3, 2, 4}; int target2 = 6; + int[] test3 = {3, 3}; int target3 = 6; + + + System.out.println("twoSum( " + Arrays.toString(test1) + ", " + target1 + " ): " + Arrays.toString(twoSum(test1, target1))); + System.out.println("twoSum( " + Arrays.toString(test2) + ", " + target2 + " ): " + Arrays.toString(twoSum(test2, target2))); + System.out.println("twoSum( " + Arrays.toString(test3) + ", " + target3 + " ): " + Arrays.toString(twoSum(test3, target3))); + + } + + static int[] twoSum(int[] nums, int target) { + int[] res = new int[2]; + + HashMap d = new HashMap<>(); + + for (int i = 0; i < nums.length; i++) { + var remainderIdx = d.get(target - nums[i]); + if (remainderIdx != null) { + res[0] = i; + res[1] = remainderIdx; + return res; + } else { + d.put(nums[i], i); + } + } + + return res; + } +} diff --git a/Two Sum/a.out b/Two Sum/a.out new file mode 100755 index 0000000000000000000000000000000000000000..a5943ac29d70ccab3389903c004c9436cfe88de3 GIT binary patch literal 56344 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 literal 0 HcmV?d00001 diff --git a/Two Sum/solution.c b/Two Sum/solution.c new file mode 100644 index 0000000..cf3e1bb --- /dev/null +++ b/Two Sum/solution.c @@ -0,0 +1,48 @@ +#include + +typedef struct { + int key; + int value; + int used; +} Entry; + +int hash(int key, int size) { + return (key % size + size) % size; +} + +int* twoSum(int* nums, int numsSize, int target, int* returnSize) { + + int tableSize = numsSize * 2; + Entry* table = calloc(tableSize, sizeof(Entry)); + + int* res = malloc(sizeof(int) * 2); + *returnSize = 2; + + for (int i = 0; i < numsSize; i++) { + int complement = target - nums[i]; + int h = hash(complement, tableSize); + + while (table[h].used) { + if (table[h].key == complement) { + res[0] = i; + res[1] = table[h].value; + free(table); + return res; + } + h = (h + 1) % tableSize; + } + + h = hash(nums[i], tableSize); + while (table[h].used) { + h = (h + 1) % tableSize; + } + + table[h].used = 1; + table[h].key = nums[i]; + table[h].value = i; + } + + free(table); + return res; +} + diff --git a/Two Sum/solution.cpp b/Two Sum/solution.cpp new file mode 100644 index 0000000..ddb55cd --- /dev/null +++ b/Two Sum/solution.cpp @@ -0,0 +1,44 @@ +#include +#include +#include + +using namespace std; + +class Solution { +public: + vector twoSum(vector& nums, int target) { + vector res(2); + + unordered_map d; + + for (size_t i = 0; i < nums.size(); i++) { + if (d.find(target - nums[i]) != d.end()) { + res[0] = i; + res[1] = d[target - nums[i]]; + return res; + } else { + d[nums[i]] = i; + } + } + + return res; + } +}; + +int main (int argc, char *argv[]) { + Solution s; + + vector test1 = {2, 7, 11, 15}; int target1 = 9; + vector test2 = {3, 2, 4}; int target2 = 6; + vector test3 = {3, 3}; int target3 = 6; + + vector res1 = s.twoSum(test1, target1); + cout << res1[0] << ' ' << res1[1] << endl; + vector res2 = s.twoSum(test2, target2); + cout << res2[0] << ' ' << res2[1] << endl; + vector res3 = s.twoSum(test3, target3); + cout << res3[0] << ' ' << res3[1] << endl; + + return 0; +} + diff --git a/Two Sum/solution.py b/Two Sum/solution.py new file mode 100644 index 0000000..d9ca9fe --- /dev/null +++ b/Two Sum/solution.py @@ -0,0 +1,10 @@ +class Solution: + def twoSum(self, nums: List[int], target: int) -> List[int]: + d: dict = {} + + for i in range(len(nums)): + if (target - nums[i]) in d.keys(): + return [i, d[target - nums[i]]] + else: + d[nums[i]] = i +