题目来源:
力扣https://leetcode.cn/problems/two-sum/题目简介:就是给个目标值,要求从数组里找到,并返回下标值
思路:
由于暴力解法用两个for循环时间复杂度过高,我们就可以省略一个用到哈希表的方法,创建一个哈希表,让target-x在哈希表里找,没找到就存进去。
代码实现:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> hashtable;
for (int i = 0; i < nums.size(); ++i) {
auto it = hashtable.find(target - nums[i]);
if (it != hashtable.end()) {
return {it->second, i};
}
hashtable[nums[i]] = i;
}
return {};
}
};