您的位置:首页 > 其它

leetcode1 two sum

2015-05-13 11:24 162 查看
class Solution {

public:

vector<int> twoSum(vector<int> &numbers, int target) {

// sort(numbers.begin,numbers.end);

vector<int> results;

vector<int>::size_type i;

multimap<int,int>map1;

for( i=0;i<numbers.size();i++)

{

map1.insert(make_pair(numbers[i],i+1));

//map1[numbers[i]]=i+1;

}

for(multimap<int,int>::iterator iter=map1.begin();iter!=map1.end();iter++)

// for( i=0;i<numbers.size();i++)

{

//if(map1.count(target-numbers[i]))

if(map1.count(target-iter->first))

{

multimap<int,int>::iterator iter1=map1.find(target-iter->first);

if(iter1==iter) iter1++;

if(iter->second<iter1->second)

{

// results.push_back(i+1);

results.push_back(iter->second);

results.push_back(iter1->second);

}

else

{

results.push_back(iter1->second);

results.push_back(iter->second);

// results.push_back(i+1);

}

break;

}

}

return results;

}

};

此题用map做比较快,但是考虑到重复的情况必须用multimap; 注意multimap的iterator只能自增。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: