C++, unordered_map,简单省事。这里不用数组充当哈希表的原因是,遍历费时(O(图片说明 ))。

class Solution {
public:
    /**
     * 
     * @param numbers int整型vector 
     * @param target int整型 
     * @return int整型vector
     */
    vector<int> twoSum(vector<int>& numbers, int target) {
        // write code here
        unordered_map<int, int> Mymap;
        unordered_map<int, int>::iterator it;
        int i;
        for (i = 0; i < (int)numbers.size(); i++) {
            it = Mymap.find(target - numbers[i]);
            if (it != Mymap.end()) 
                break;
            else
                Mymap[numbers[i]] = i + 1;
        }
        return {it->second, i + 1};
    }
};