解题思路
在进行迭代并将元素插入到表中的同时,我们还会回过头来检查表中是否已经存在当前元素所对应的目标元素。如果它存在,那我们已经找到了对应解,并立即将其返回。
时间复杂度O(n)
空间复杂度O(n)
代码
#include<iostream>
#include<vector>
#include<unordered_map>
using namespace std;
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> m;
for (int i = 0; i < nums.size(); i++) {
int complement = target - nums[i];
if (m.find(complement) != m.end()) { return { m[complement],i }; }//此时查找complement不会查找到nums[i]本身,因为其还未加入
m.insert({ nums[i],i });//加入
}
return {};
}
};