#include <unordered_set>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @param target int整型 
     * @return int整型vector
     */
    vector<int> twoSum(vector<int>& nums, int target) {
        // write code here
        //先建立一个unordered_set容器存放数组a,方便后续查找是否在a中存在这个数
        unordered_set<int> uset(nums.begin(), nums.end());
        vector<int>::iterator it;//构建迭代器
        int i, j;//用来存放结果下标
        int nums_j;//存储第二个数的值
        //遍历序列nums
        for(it = nums.begin(); it != nums.end(); it++){
            if(uset.count(target - *it)){//如果*it能配对成功的数在序列中存在则获取到i的值并终止循环
                i = it - nums.begin() + 1;
                nums_j = target - *it;
                break;
            }
        }
        //继续遍历下去得到j的值
        for(it = nums.begin() + i; it != nums.end(); it++){
            if(*it == nums_j){
                j = it - nums.begin() + 1;
                break;
            }
        }
        //返回结果
        vector<int> res = {i , j};
        return res;
    }
};