Two Sum

Code:

O(n):

class Solution {
public:
    vector<int> twoSum(vector<int> &numbers, int target) {
        vector<int> res;
        map<int,int> mapping;
        int n=numbers.size();
        for (int i=0; i<n; ++i)
            if (mapping[ target - numbers[i]]){
                res.push_back(mapping[ target - numbers[i]]);
                res.push_back(i+1);               
            }
            else
                mapping[ numbers[i] ] = i+1;
        return res;
    }
};

O(nxm):

class Solution {
public:
    vector<int> twoSum(vector<int> &numbers, int target) {
        vector<int> res;
        int n=numbers.size();
        for(int i=0;i<n;i++)
            for(int j=i+1;j<n;j++)
                if(numbers[i]+numbers[j]==target){
                    res.push_back(i+1);
                    res.push_back(j+1);
                    return res;
                }
        return res;
    }
};
原文地址:https://www.cnblogs.com/winscoder/p/3391631.html