LeetCode题目一 两数之和
#include<iostream>
#include<vector>
#include<unordered_map>
using namespace std;
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> res;
for (int i = 0; i < nums.size(); i++){
for (int j = i + 1; j < nums.size(); j++) {
if (nums[i]+nums[j] == target)
{
res.push_back(i);
res.push_back(j);
}
}
}
return res;
}
vector<int> twoSumHash(vector<int>& nums, int target) {
vector<int> res;
unordered_map<int, int> map;
for (int i = 0; i < nums.size(); i++) {
map[nums[i]] = i;
}
for (int i = 0; i < nums.size(); i++) {
if ((map.find(target - nums[i]) != map.end())
&& (map[target - nums[i]] != i)) {
res.push_back(i);
res.push_back(map[target - nums[i]]);
return res;
}
}
}
int main()
{
vector<int> nums;
vector<int> res;
nums.push_back(2);
nums.push_back(7);
nums.push_back(11);
nums.push_back(15);
int target = 9;
res = twoSumHash(nums, target);
for (int i = 0; i < res.size(); i++) {
cout << res[i];
cout << " ";
}
return 0;
}