Hash

【C++ 哈希表查找口诀】

  1. 想知道有没有 key? → 用 count: if (map.count(key))

  2. 想查并用它的 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 {};
    }