硬解
#include <iostream>
#include <vector>
using namespace std;
class Solution
{
public:
vector<int> twoSum(vector<int> &nums, int target)
{
vector<int> result(2, -1);
for (int i = 0; i < nums.size(); i++)
{
for (int j = i + 1; j < nums.size(); j++)
{
if (nums[i] + nums[j] == target)
{
result[0] = i;
result[1] = j;
return result;
}
}
}
return result;
}
};
int main()
{
vector<int> nums = {4, 3, 2, 1};
int target = 5;
Solution solution;
vector<int> result = solution.twoSum(nums, target);
for (int i = 0; i < result.size(); i++)
{
cout << result[i] << " ";
}
cout << endl;
return 0;
}
使用Map
#include <iostream>
#include <vector>
#include <map>
using namespace std;
class Solution
{
public:
vector<int> twoSum(vector<int> &nums, int target)
{
vector<int> result(2, -1);
map<int, int> m;
for (int i = 0; i < nums.size(); i++)
{
if (m.count(nums[i]))
{
result[0] = i;
result[1] = m[nums[i]];
return result;
}
m[target - nums[i]] = i;
printf("insert [key]%d [value]%d\n", target - nums[i], m[target - nums[i]]);
}
return result;
}
};
int main()
{
vector<int> nums = {4, 3, 2, 1};
int target = 5;
Solution solution;
vector<int> result = solution.twoSum(nums, target);
for (int i = 0; i < result.size(); i++)
{
cout << result[i] << " ";
}
cout << endl;
return 0;
}