本题最容易想到的就是暴力遍历解法但是时间复杂为o(),所以本题可以采用哈希表进行秋姐,代码如下
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int,int> _map;//创建一个哈希表
for(int i = 0;i<nums.size();i++)
{
unordered_map<int,int>::iterator it = _map.find(target - nums[i]);//创建迭代器查找哈希表中是否有与当前数组值相加得target的数
if(it!=_map.end())//当迭代器it不位于哈希表尾部时,说明找到乐,返回元素
return {it->second,i};
_map[nums[i]] =i;//将当前数值放入哈希表,以便下轮循环查找
}
return {};//若找不到返回空值
}
};
这样我们就将时间复杂度降到了o(n)