-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path1. Two Sum
54 lines (50 loc) · 1.78 KB
/
1. Two Sum
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
// int n = nums.size();
// for(int i = 0 ; i < n-1 ; i++) //bruteforce
// for(int j = i +1 ; j < n ; j++ )
// if(nums[i] + nums[j] == target)
// return {i , j};
// return {};
////////////////////////////////////
map<int,int> m; //second approach (slower then third approach)
vector<int> ans;
for(int i=0;i<nums.size();i++)
{
if(m.find(target-nums[i]) != m.end()){
ans = {i, m[target-nums[i]]};
return ans;
}
m[nums[i]] = i;
}
return ans;
/*Runtime: 26 ms, faster than 60.72% of C++ online submissions for Two Sum.
Memory Usage: 11.2 MB, less than 21.04% of C++ online submissions for Two Sum.*/
////////////////////////////////////
// vector<pair<int,int>> v; //sanchi approach
// for(int i=0;i<nums.size();i++)
// {
// v.push_back({nums[i],i});
// }
// vector<int> res;
// sort(v.begin(),v.end());
// auto itr1=v.begin();
// auto itr2=v.end()-1;
// while(itr1!=itr2){
// if((itr1->first+itr2->first)==target)
// {
// res.push_back(itr1->second);
// res.push_back(itr2->second);
// break;
// }
// if((itr1->first+itr2->first)<target)
// itr1++;
// else
// itr2--;
// }
// return res;
/*Runtime: 6 ms, faster than 99.12% of C++ online submissions for Two Sum.
Memory Usage: 11.1 MB, less than 23.14% of C++ online submissions for Two Sum.*/
}
};