哈希
1. 两数之和
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {//构建hash表 unordered_map<int,int>hash;//遍历每个元素数据for(int i = 0 ; i < nums.size();++i){//目标 - 当前数据 == 与当前设备匹配的元素数据auto r = target - nums[i];//查询hash表中是否有记载if(hash.count(r))return {hash[r] , i};//hash表中无记载,把当前数据元素加入到hash表hash[nums[i]] = i;}//没有任何结果返回return {};}
};
49. 字母异位词分组
class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {//构建哈希表 unordered_map<string,vector<string>>hash;// 遍历每一个元素for (auto &str : strs){//将当前元素赋值给新变量string nstr = str;//重新排序新的变量sort(nstr.begin(),nstr.end());//将排序后的变量作为key,原始变量作为valuehash[nstr].push_back(str);}//上面的操作把每个元素数据进行归一化,下面输出归一化后的结果vector<vector<string>>res;for(auto &item : hash)res.push_back(item.second);return res;}
};