虽然是一篇水文,但是记录一下自己的leetcode第一题,以后就不发水题解了(好题还是会发)
原题在这里 两数之和
下面是代码:
我觉得hash的方法主要还是弄懂map这个容器的基本操作
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int, int> hashtable;
//弄清什么做键,什么做值
for (int i = 0; i < nums.size(); ++i) {
// target - nums[i]是我们要找的键
auto it = hashtable.find(target - nums[i]);
if (it != hashtable.end()) {
//代表找到了这样一个键,同时我们的i的键肯定是比it的靠后的
return {it->second, i};
}
hashtable[nums[i]] = i;
}
return {};
}
};