一、暴力枚举
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
class Solution
{
public:
vector<int> twoSum(vector<int>& nums, int target)
{
int n = nums.size();
for (int i = 0; i < n; ++i)
{
for (int j = i + 1; j < n; ++j)
{
if (nums[i] + nums[j] == target)
{
return{ i, j };
}
}
}
return{};
}
};
void prnit(int val)
{
cout << val << " ";
}
int main()
{
vector<int>nums;
nums.push_back(2);
nums.push_back(7);
nums.push_back(11);
nums.push_back(15);
Solution sol;
vector<int> tmp = sol.twoSum(nums, 9);
for_each(tmp.begin(), tmp.end(), prnit);
system("pause");
return 0;
}
二、哈希表
#include<iostream>
using namespace std;
#include<unordered_map>
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> hashtable;
for (int i = 0; i < nums.size(); ++i) {
auto it = hashtable.find(target - nums[i]);
if (it != hashtable.end()) {
return{ it->second, i };
}
hashtable[nums[i]] = i;
}
return{};
}
};
int main() {
vector<int> nums = { 7,15,2,11 };
Solution sol;
vector<int> an=sol.twoSum(nums, 9);
for (auto it = an.begin(); it != an.end(); ++it) {
cout << *it<<" ";
}
system("pause");
return 0;
}