diff --git a/Problem1.cpp b/Problem1.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/Problem1.java b/Problem1.java deleted file mode 100644 index e69de29b..00000000 diff --git a/Problem1.py b/Problem1.py new file mode 100644 index 00000000..d926aaa3 --- /dev/null +++ b/Problem1.py @@ -0,0 +1,55 @@ +# https://leetcode.com/problems/two-sum/description/ + +# Bruteforce solution +# TC: O(n^2) + +class Solution: + def twoSum(self, nums, target): + res = [] + for i in range(0, len(nums)): + for j in range(i+1, len(nums)): + if nums[i] + nums[j] == target: + res += [i, j] + + return res + +s = Solution() +print(s.twoSum([2,7,11,15], 17)) + +# Hashmap +# TC: O(2n) => O(n) + +class Solution: + def twoSum(self, nums, target): + hm = {} + n = len(nums) + res = [] + + for i in range(n): + if nums[i] not in hm: + hm[nums[i]] = i + + for i in range(n): + comp = target - nums[i] + if comp in hm: + res += [i, hm[comp]] + del hm[nums[i]] + del hm[comp] + + return res + +s = Solution() +print(s.twoSum([2,7,11,15], 9)) + +# Hashmap with one pass +# TC: O(n) + +class Solution: + def twoSum(self, nums: List[int], target: int) -> List[int]: + hm = {} + + for i, num in enumerate(nums): + comp = target - num + if comp in hm: + return [hm[comp], i] + hm[num] = i \ No newline at end of file diff --git a/Problem2.cpp b/Problem2.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/Problem2.java b/Problem2.java deleted file mode 100644 index e69de29b..00000000