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

算法刷题之哈希表

知识点

常见的哈希结构:数组、set、map

// 创建并初始化 unordered_set
unordered_set<int> set = {1, 2, 3, 4, 5};// 插入新元素
set.insert(6);// 检查元素是否存在
if (set.find(3) != set.end()) {cout << "3 is in the set" << endl;
}// 删除元素
set.erase(3);// 检查集合大小
cout << "Set size: " << set.size() << endl;// 检查集合是否为空
if (set.empty()) {cout << "The set is empty." << endl;
}// 遍历集合
for (int num : set) {cout << " " << num;
}// 计数元素出现次数(对于 unordered_set 总是 1 或 0)
cout << "Count of 4 in the set: " << set.count(4) << endl;// 清空集合
set.clear();
// 创建并初始化 unordered_map
unordered_map<int, string> um = {{1, "one"},{2, "two"},{3, "three"}
};// 插入新元素
um.insert({4, "four"});
um[5] = "five"; // 使用下标操作符进行插入或赋值// 访问元素
cout << "Value for key 1: " << um[1] << endl;// 查找元素
auto it = um.find(3);
if (it != um.end()) {cout << "Found: " << it->second << endl;
}// 删除元素
um.erase(3); // 删除键为3的元素
um.clear(); // 清空所有元素// 获取元素数量
cout << "Size after clear: " << um.size() << endl;// 检查是否为空
cout << "Is the map empty? " << (um.empty() ? "Yes" : "No") << endl;// 遍历元素
for (const auto& pair : um) {cout << pair.first << " => " << pair.second << endl;
}// 使用 emplace 插入元素
um.emplace(3, "three");// 获取迭代器并遍历
auto beginIt = um.begin();
auto endIt = um.end();
for (auto it = beginIt; it != endIt; ++it) {cout << it->first << " => " << it->second << endl;
}// 更新元素
um[1] = "ONE"; // 更新键为1的元素的值

哈希的核心思想是把需要的数据提前计算并存储,以空间换时间

例题

383. 赎金信 - 力扣(LeetCode)

bool canConstruct(string ransomNote, string magazine) {int a[26], b[26];for(int i = 0; i < ransomNote.size(); i ++){a[ransomNote[i] - 'a'] ++;}for(int i = 0; i < magazine.size(); i ++){b[magazine[i] - 'a'] ++;}for(int i = 0; i < 26; i++){if(a[i] > b[i]) return false;}return true;
}
http://www.lryc.cn/news/415311.html

相关文章:

  • 【linux】linux中定时任务的巧妙运用,让你轻松解放双手
  • 【复旦微FM33 MCU 外设开发指南】系统篇——时钟
  • Android Graphics 显示系统 - 计算FPS的原理与探秘Present Fence
  • 图论:1857. 有向图中最大颜色值(拓扑排序+动态规划)
  • pytorch学习笔记3 tensor索引和切片
  • 学习记录——day23 多进程编程
  • 英特尔股市暴跌,财报亏损 | HuggingFace 实现盈利 |iOS18 Beta 苹果AI
  • C++入门基础(二)
  • fabricjs 实现图像的二值化功能
  • 修改本地hosts文件及外部访问机器本地hosts文件后,rancher UI网站仍然不能访问
  • 西北潮榆林范儿,新榆林首个360°沉浸式剧场发布会闪耀亮相
  • 如何创建响应式移动端网页设计?最佳实践详解
  • Python 如何进行Web抓取(BeautifulSoup, Scrapy)
  • 白骑士的PyCharm教学进阶篇 2.5 数据库连接与管理
  • (五)activiti-modeler 编辑器初步优化
  • (学习总结12)C++类和对象3
  • docxtpl,一个强大的 Python 库!
  • 捷途山海T2:超长续航,节能环保的驾驶新星
  • [Day 45] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • 白骑士的PyCharm教学实战项目篇 4.3 自动化测试与持续集成
  • 权限模块开发+权限与角色关联(完整CRUD)
  • llama神经网络的结构,llama-3-8b.layers=32 llama-3-70b.layers=80; 2000汉字举例说明
  • 单细胞数据怎么表现genes mRNA表达的热图?
  • Java聚合快递对接云洋系统小程序源码
  • MySQL——数据表的基本操作(三)修改数据表
  • 医学图像分割的基准:TransUnet(用于医学图像分割的Transformer编码器)器官分割
  • java-swing编写学生成绩查询管理系统
  • volatile浅解
  • 世媒讯带您了解什么是媒体邀约
  • [Kimi 笔记]“面向搜索引擎”