码迷,mamicode.com
首页 > 其他好文 > 详细

【编程】leetcode

时间:2014-12-30 18:52:06      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

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

标签:

原文地址:http://www.cnblogs.com/visong/p/4194223.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!