首页 > 代码库 > 【编程】leetcode

【编程】leetcode

之前了解到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});
            }
        }
    }
};

 

【编程】leetcode