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> hashMap;//第一个key值是数组的值,第二个value是对应的下标
vector<int> array;
for(int i=0;i<numbers.size();i++)
{
hashMap[numbers[i]]=i;//存到哈希表中去
}
for(int i=0;i<numbers.size();i++)
{
int temp=target-numbers[i];//在哈希表中找出另一半
auto it=hashMap.find(temp);
if(it!=hashMap.end()&&it->second!=i)//不能等于自己,比如实例1中不能是两个3,必须是不一样的
{
array.push_back(i+1);//注意这里存的是位置而不是数组下标
array.push_back(it->second+1);//存的是位置不是下标,所以要加1
return array;
}
}
return array;
}
};
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> hashMap;//第一个key值是数组的值,第二个value是对应的下标
vector<int> array;
for(int i=0;i<numbers.size();i++)
{
hashMap[numbers[i]]=i;//存到哈希表中去
}
for(int i=0;i<numbers.size();i++)
{
int temp=target-numbers[i];//在哈希表中找出另一半
auto it=hashMap.find(temp);
if(it!=hashMap.end()&&it->second!=i)//不能等于自己,比如实例1中不能是两个3,必须是不一样的
{
array.push_back(i+1);//注意这里存的是位置而不是数组下标
array.push_back(it->second+1);//存的是位置不是下标,所以要加1
return array;
}
}
return array;
}
};