当前位置: 首页 > news >正文

每日算法-哈希表(两数之和、)

一.两数之和

1.1题目描述

1.2题解思路

利用哈希表,先判断hash表中有无target-nums[i]的值,再将nums[i]放入到hash表中

1.3题解代码

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {vector<int> ret;unordered_map<int,int> hash;//nums[i] 数组下标for(int i = 0; i < nums.size(); i++){//判断i之前的数据有无target-nums[i]的值int key = target-nums[i];if(hash.count(key)){//找到了ret.push_back((hash[key]));ret.push_back(i);break;}//将nums[i]放入到hash表中hash[nums[i]] = i;}return ret;}
};

二.判断是否互为字符重排

2.1题目描述

2.2题解思路

定义两个hash表,hash1记录第一个字符串,hash2记录第二个字符串,判断hash1和hash2是否相等即可。

优化:只定义一个hash表,记录第一个字符串时,执行++操作,记录第二个字符串时,执行--操作,最后遍历一遍hash表,看是否为0

2.3题解代码

class Solution {
public:bool CheckPermutation(string s1, string s2) {if(s1.size() != s2.size()) return false;//数组下标char 数组存的数据intint hash[26];for(auto &e : s1){++hash[e-97];}for(auto &e : s2){--hash[e-97];}for(auto &e : hash){if(e != 0) return false;}return true;}
};

三.存在重复元素II

3.1题目描述

3.2题解思路

利用哈希表,先判断hash表中有无nums[i],若有则继续判断其下标之差是否<=k,再将nums[i]放入到hash表中

3.3题解代码

class Solution {
public:bool containsNearbyDuplicate(vector<int>& nums, int k) {unordered_map<int,int> hash;//nums[i] i//遍历一遍nums,将nums中的数据放入到hash表中for(int i = 0; i < nums.size(); i++){if( hash.count(nums[i]) ){if(i - hash[nums[i]] <= k)return true;}hash[nums[i]] = i;}return false;}
};

四.字母异位词分组

4.1题目描述

4.2题解思路

定义一个hash表,key值存排序后的string,value存原始的string列表。

遍历strs,将数据存储到hash表中,最后再遍历hash表,value中存储的值就是答案

4.3题解代码

class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {unordered_map<string,vector<string>> hash;//排序之后的string,原始的string列表for(int i = 0; i < strs.size(); i++){//首先进行排序string tmp = strs[i];sort(strs[i].begin(),strs[i].end());//把数据放入到hash表中hash[strs[i]].push_back(tmp);}vector<vector<string>> ret;for(auto& kv: hash){ret.push_back(kv.second);}return ret;}
};

相关文章:

  • el-table表格既出现横向滚动条,又出现纵向滚动条?
  • YOLOv8非常详细的模型的训练两种方式
  • 文件上传漏洞2
  • <四级英语词汇> 2025.4.22
  • Cursor Free VIP 重置进程错误,轻松恢复使用!
  • 三网通电玩城平台系统结构与源码工程详解(四):子游戏集成与服务器调度机制全解
  • Java学习手册:RESTful API 设计原则
  • MQ底层原理
  • 强化学习笔记(四)——SARSA、Q-learning
  • 伪谱法求解最优控制问题(附Python代码)
  • Lustre/Scade 与 IEC 61131-3 相似的方面及差异
  • C++ 拷贝构造函数 浅拷贝 深拷贝
  • 【以太网安全】——防护高级特性配置总结
  • Windows7升级Windows10,无法在此驱动器上安装Windows
  • 鸿道操作系统Type 1虚拟化:破局AI机器人与智能汽车的“安全”与“算力”双刃剑
  • STM32提高篇: WIFI通讯
  • S32K144学习(16)-Bootloader
  • EdgeGPT - 新版Bing聊天功能逆向工程
  • 序列决策问题(Sequential Decision-Making Problem)
  • (区间 dp)洛谷 P6879 JOI2020 Collecting Stamps 3 题解
  • 习近平对双拥工作作出重要指示
  • 威廉·透纳诞辰250周年|他是现代艺术之父
  • 人民网评“我愿意跟他挨着”热搜第一:充满温暖力量的七个字
  • 新质观察|解构低空经济产业集群发展战略
  • 澎湃思想周报|哈佛与特朗普政府之争;学习适应“混乱世”
  • 女子伸腿阻止列车关门等待同行人员,被深圳铁路警方行政拘留