#include<map>
class Solution {
public:
/**
* 给出一个整数数组,请在数组中找出两个加起来等于目标值的数,
*你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于
*index2.。注意:下标是从1开始的
*假设给出的数组中只存在唯一解
*例如:
*给出的数组为 {20, 70, 110, 150},目标值为90
*输出 index1=1, index2=2
* @param numbers int整型vector
* @param target int整型
* @return int整型vector
*/
vector<int> twoSum(vector<int>& numbers, int target) {
// write code here
//哈希表、减去当前数,然后判断相差的数在数组中是否存在。
//初始化
vector<int>result;
map<int,int>coll;
for(int i=0;i<numbers.size();i++){
coll[numbers[i]]=i+1;
}
for(int i=0;i<numbers.size();i++){
int tem=target-numbers[i];
if(coll.count(tem)==1&&coll[tem]!=i+1){
result.push_back(i+1);
result.push_back(coll[tem]);
break;
}else{
continue;
}
}
return result;
}
};