File tree Expand file tree Collapse file tree 1 file changed +68
-0
lines changed Expand file tree Collapse file tree 1 file changed +68
-0
lines changed Original file line number Diff line number Diff line change 1+ // Brute Force
2+ class Solution {
3+ public:
4+ vector<int > twoSum (vector<int >& nums, int target) {
5+ for (int i = 0 ;i<nums.size ();i++) {
6+ for (int j = i+1 ;j<nums.size ();j++) {
7+ if (nums[i] + nums[j] == target) return {i,j};
8+ }
9+ }
10+ return {};
11+ }
12+ };
13+ /*
14+ Runtime: 2.2 ms
15+ Memory Usage: 12.69 MB
16+ Time Complexity : O(n^2)
17+ */
18+
19+
20+ // One-Pass Hash Table
21+ class Solution {
22+ public:
23+ vector<int > twoSum (vector<int >& nums, int target) {
24+ unordered_map<int , int > numMp;
25+ int n = nums.size ();
26+
27+ for (int i = 0 ; i < n; i++) {
28+ int complement = target - nums[i];
29+ if (numMp.count (complement)) {
30+ return {numMp[complement], i};
31+ }
32+ numMp[nums[i]] = i;
33+ }
34+ return {};
35+ }
36+ };
37+ /*
38+ Runtime: 3 ms
39+ Memory Usage: 14.12 MB
40+ Time Complexity : O(n)
41+ */
42+
43+
44+ // Two-pass Hash Table
45+ class Solution {
46+ public:
47+ vector<int > twoSum (vector<int >& nums, int target) {
48+ unordered_map<int , int > numMp;
49+ int n = nums.size ();
50+
51+ for (int i = 0 ;i < n; i++) {
52+ numMp[nums[i]] = i;
53+ }
54+
55+ for (int i = 0 ; i < n; i++) {
56+ int complement = target - nums[i];
57+ if (numMp.count (complement) && numMp[complement] != i) {
58+ return {i, numMp[complement]};
59+ }
60+ }
61+ return {};
62+ }
63+ };
64+ /*
65+ Runtime: 11 ms
66+ Memory Usage: 15.69 MB
67+ Time Complexity : O(n)
68+ */
You can’t perform that action at this time.
0 commit comments