Fork me on GitHub

1.Two sum

原题描述:

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

给定一个数组,返回两个数在数组中的索引,使它们相加等于给定的目标值。

解题思路:使用map的key-value结构存放遍历过数组元素的值和下标,在map中直接查找,有插入到返回的vector中,没有插入到map。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
vector<int> twoSum(vector<int> &nums,int target)
{
vector<int> result;
map<int,int> hashmap;
map<int,int>::iterator iter;
for (int i = 0; i < nums.size();++i)
{
iter = hashmap.find(target-nums[i]);
if (iter != hashmap.end())
{
result.push_back(i);
result.push_back(iter->second);
}
else
{
hashmap.insert(pair<int,int>(nums[i],i));
}
}
return result;
}
您的赞赏是对我最大的支持,谢谢!