Hash
【C++ 哈希表查找口诀】
想知道有没有 key? → 用 count:
if (map.count(key))想查并用它的 value? → 用 find:
if (map.find(key) != map.end())口诀:
- count 大于 0,就说明有
- find 不等于 end,就说明找到了
两数之和
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 {i, it->second};
}
hashtable[nums[i]] = i;// 添加元素, 这里的添加顺序不可提前,因为我想做的是先查找,如果先添加会影响这一次查找
}
return {};
}