一次遍历数组,遍历过程中,维持一个哈希表,用来保存值和下标,然后判断哈希表中是否有target-num[i]。

class Solution {
public:
    /**
     * 
     * @param numbers int整型vector 
     * @param target int整型 
     * @return int整型vector
     */
    vector<int> twoSum(vector<int>& numbers, int target) {
        vector<int> result{};
        unordered_map<int,int> un_map{}; //<val,index>
        for(int i=0;i<numbers.size();++i){
            if (un_map.find(target-numbers[i])!=un_map.end()){
                result.push_back(i);
                result.push_back(un_map[target-numbers[i]]);
            }
            else{
                un_map.insert({numbers[i],i});
            }
        }
        sort(result.begin(),result.end());
        for(auto& x:result) x++;
        return result;
    }
};