1. 两数之和
如输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
利用哈希表
算法:将target减去数组中的num[i],如果哈希表中没有对应的哈希值,则将其存入哈希表中;否则返回。
#include <iostream>
#include<unordered_map>
using namespace std;
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]); // it包含着哈希表的值和原始数据
if (it != hashtable.end()) { //判断it是否指向容器末尾,当不是指向末尾表示这一次在表中找到了
return{ it->second,i };
}
hashtable[nums[i]] = i; //没找到,插入数据nums[i]
}
}
};
int main()
{
Solution s;
vector<int> t = { 3, 4, 5, 6, 3 };
vector<int> h = s.twoSum(t, 6);
for (int i = 0; i < h.size(); i++)
{
cout << h[i];
}
}
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/two-sum/solution/liang-shu-zhi-he-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。