之前了解到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}); } } }};
时间: 2024-11-05 20:48:24