标签:
之前了解到leetcode是个不错的刷题站点,今天稍微尝试了一下第一题,比较简单,要排序又要通过hash表来保存相应的index。
只是在弄输出结果的时候,花了点时间。之前还一直以为判断输出结果是通过在函数中output出来的,结果是将结果作为函数的返回值返回给系统来判断。
class Solution {
public:
class mapFinder{
public:
int left;
mapFinder(int val):left(val){}
bool operator()(const multimap<int, int>::value_type &pair)
{
return (pair.first == left);
}
};
vector<int> twoSum(vector<int> &numbers, int target) {
vector<int>::iterator it;
multimap <int, int> iiMap;
multimap <int, int>::iterator iiMit1, iiMit2, iiMit3;
for (it = numbers.begin(); it != numbers.end(); it++)
{
iiMap.insert(pair<int, int>(*it, it - numbers.begin() + 1));
}
for (iiMit1 = iiMap.begin(), iiMit2 = iiMap.end(); iiMit1 != iiMap.end(); iiMit1++)
{
iiMit3 = iiMit1;
iiMit3++;
iiMit2 = find_if(iiMit3, iiMap.end(), mapFinder(target - iiMit1->first));
if (iiMit2 != iiMap.end()) /* found */
{
break;
}
}
if (iiMit2 != iiMap.end())
{
if (iiMit1->second > iiMit2->second)
{
return vector<int>({iiMit2->second, iiMit1->second});
}
else
{
return vector<int>({iiMit1->second, iiMit2->second});
}
}
}
};
标签:
原文地址:http://www.cnblogs.com/visong/p/4194223.html