这题要注意的是, 3,2,4这种情况。 使用map建成哈希表后,如果target恰好为某个值的2倍,那么map1find的时候也是能够检索到的,但是是不符合题意的。

class Solution {
public:
    /**
     * 
     * @param numbers int整型vector 
     * @param target int整型 
     * @return int整型vector
     */
    vector<int> twoSum(vector<int>& numbers, int target) {
        // write code here
        // 使用map<int, int> 数字+索引。逐个便利数组,如果找到,return
        map<int, int> map1;
        int len = numbers.size();
        vector<int> ret;

        for (int i = 0; i < len; i++) {
            map1[numbers[i]] = i;
        }
        
        for (int i = 0; i < len; i++) {
            if (map1.find(target - numbers[i]) != map1.end() && (i != map1[target - numbers[i]])) {
          
                ret.push_back(i + 1);
                ret.push_back(map1[target - numbers[i]] + 1);
                return ret;
            }
        }

        return ret;
    }
};