哈希
为啥用hash?
答:hash既是一种存储方法,也一种查找方法,最适合求解查找与给定值相等的记录,但不适合范围查找。
思路:先把先生成hash表(数组元素为key,数组数组元素对应的下标索引为value),然后对于每一个数组元素,在hash表中查找key值为target-nums[i],返回即可。
vector<int> twoSum(vector<int>& nums, int target)
{
int len = nums.size();
unordered_map<int,int> hashtable;
for(int i = 0; i<len; ++i)
{
auto it = hashtable.find(target-nums[i]);
if(it != hashtable.end()) return {it->second,i};
hashtable[nums[i]] = i;
}
return {};
}