题目来源:LintCode
原题地址:http://www.lintcode.com/zh-cn/problem/two-sum/
这个题目也是简单难度,我仿造网上的思路,将输入的数据用map存储(因为map查询的速度是线性的,一般而言,可以忽略不计),以输入数据的值作为key,索引作为value;之后遍历输入数据,将目标值减去遍历的那个值,然后在map中查找减去之后的值,如果有对应的就可以返回;若没有,返回空。
代码实现:
vector<int> twoSum(vector<int> &numbers, int target)
{
// write your code here
map<int, int> mapNums;
vector<int> result;
for (int i = 0;i < numbers.size();++i)
mapNums[numbers[i]] = i;
for (int i = 0;i < numbers.size();++i)
{
map<int, int>::iterator iter = mapNums.find(target - numbers[i]);
if (iter != mapNums.end())
{
result.push_back(i + 1);
result.push_back((*iter).second + 1);
break;
}
}
return result;
}