1 两数之和 给定一个整数数组nums和一个整数目标值target请你在该数组中找出和为目标值target的那两个整数并返回它们的数组下标。你可以假设每种输入只会对应一个答案并且你不能使用两次相同的元素。方法1哈希表1、创建一个空的unordered_map(哈希表)。2、循环nums数组在查找哈希表中查找target-nums[i]是否存在。3、假如不存在把{nums[i]i}插入哈希表中nums[i]为keyi为value进入下一次循环。4、假如存在直接把 哈希 表的value和i直接返回5、循环到结尾还没找到目标数字时返回一个空的vector。class Solution { public: vectorint twoSum(vectorint nums, int target) { vectorint ans; int nnums.size(); if(n2) return ans; unordered_mapint,int hash; for(int i0;in;i){ auto it hash.find(target-nums[i]); if(it!hash.end()i!it-second){ return {i,it-second}; } hash[nums[i]]i; } return {}; } };unordered_map哈希表常见函数函数作用find(key)查找以 key 为键的键值对如果找到则返回一个指向该键值对的正向迭代器反之则返回一个指向容器中最后一个键值对之后位置的迭代器如 end() 方法返回的迭代器。insert({})向容器中添加新键值对。clear()清空容器即删除容器中存储的所有键值对。swap()交换 2 个 unordered_map 容器存储的键值对前提是必须保证这 2 个容器的类型完全相等。begin()返回指向容器中第一个键值对的正向迭代器。end()返回指向容器中最后一个键值对之后位置的正向迭代器。empty()若容器为空则返回 true否则 false。size()返回当前容器中存有键值对的个数。count(key)在容器中查找以 key 键的键值对的个数。最常见的用法就是作为一个快速、简洁的布尔检查器用来判断一个键是否存在于unordered_map中。emplace()向容器中添加新键值对效率比 insert() 方法高。mymap.emplace(key,value);erase()删除指定键值对。mymap.erase(key);