1. Two Sum
#include <vector>
#include <algorithm>
using namespace std;
/*
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int nLeft = 0;
int theFirstNumber = 0;
int theSecondNumber = 0;
vector<int>::iterator it;
vector<int>::iterator itFirst;
vector<int>::iterator itSecond;
vector<int> ret;
int nFound = 0;
int nFirstIndex = 0;
int nSecondIndex = 0;
for (it = nums.begin(); it!=nums.end(); it++)
{
itFirst = it;
theFirstNumber = *it;
nLeft = target - theFirstNumber;
itSecond = find(it+1,nums.end(),nLeft);
//find
if(itSecond!=nums.end())
{
nFirstIndex = itFirst -nums.begin();
ret.push_back(nFirstIndex);
nSecondIndex = itSecond - nums.begin();
ret.push_back(nSecondIndex);
nFound = 1;
break;
}
}
return ret;
}
};
*/
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> ret;
unordered_map<int,int> mp;
for(int i = 0;i<nums.size();i++)
{
if(mp.count(target-nums[i])){
ret.push_back(mp[target-nums[i]]);
ret.push_back(i);
return ret;
}
else
{
mp[nums[i]] = i;
}
}
return ret;
}
};