在给定的数组
第一遍扫描,建立hash映射;考虑到数组中可能有map<int , vector<int>> hs
。
第二遍遍历,判断hs[
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> v;
map<int,vector<int> > hs;
for(int i = 0; i < nums.size(); i++)
{
hs[nums[i]].push_back(i+1);
}
for(int i = 0; i < nums.size(); i++ )
{
if(hs.find(target-nums[i]) != hs.end())
{
if(target-nums[i] == nums[i] && hs[nums[i]].size() <2) continue;
v.push_back(i+1);
v.push_back(hs[target-nums[i]].back());
break;
}
}
return v;
}
};
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/jeanphorn/article/details/46661743