[LeetCode 1]Two Sum(C++)

//refer to the Internet

#include<iostream>
#include<vector>
#include<map>

using namespace std;

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        map<int, int> m;
        vector<int> res;
        for (int i = 0; i < nums.size(); ++i) {
            m[nums[i]] = i;
        }
        for (int i = 0; i < nums.size(); ++i) {
            int t = target - nums[i];
            if (m.count(t) && m[t] != i) {
                res.push_back(i);
                res.push_back(m[t]);
                break;
            }
        }
        return res;
    }
};

int main() {
    vector<int> one;
    one.push_back(2);
    one.push_back(4);
    one.push_back(6);
    one.push_back(7);
    one.push_back(8);

    vector<int>::iterator iter;
    vector<int>::iterator begin = one.begin();
    vector<int>::iterator end = one.end();
    cout << "one: " << endl;
    for (iter = begin; iter != end; iter++)
    {
        static size_t i = 0;
        cout << *iter << ",";
        i++;
    }
    cout << endl;
    cout << "size:" << one.size() << endl;
    cout << "capacity: " << one.capacity() << endl;

    Solution st;
    vector<int> out = st.twoSum(one, 11);
    vector<int>::iterator tmpIter;
    vector<int>::iterator temBeg = out.begin();
    vector<int>::iterator temEnd = out.end();
    cout << "out: " << endl;
    for (tmpIter = temBeg; tmpIter != temEnd; tmpIter++)
    {
        static size_t j = 0;
        cout << *tmpIter << ",";
        j++;
    }
    cout << endl;

    system("pause");
    return 0;
}

  

posted on 2018-04-12 11:05  JoeTsing  阅读(136)  评论(0)    收藏  举报

导航