您的位置:首页 > 编程语言

【编程】leetcode

2014-12-30 18:14 99 查看
之前了解到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});

}
}
return vector <int> ({0, 0});
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: