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

Day3 记忆内容:map set 高频操作

以下是 第三天 的详细学习内容,聚焦 mapset的高效应用,重点突破查找类题型去重逻辑,助你提升代码效率!


📚 Day3 记忆内容:map & set 高频操作

1. map 核心操作(手写3遍)
// 初始化
map<string, int> mp;                   // 有序(按key升序)
unordered_map<string, int> ump;         // 无序(哈希表,查询O(1))// 关键API
mp["apple"] = 5;                       // 插入/修改(若key不存在则创建)
mp.insert({"banana", 3});              // 插入(若key存在则不覆盖)
auto it = mp.find("apple");            // 返回迭代器(未找到返回mp.end())
mp.erase(it);                          // 通过迭代器删除
mp.count("apple");                     // 返回存在次数(0或1)
mp.lower_bound(50);                    // 返回首个≥key的迭代器(有序map特有)// 遍历(C++17风格)
for (auto& [key, value] : mp) { cout << key << ":" << value << endl;
}
2. set 核心操作(手写3遍)
// 初始化
set<int> s;                            // 有序集合(元素唯一)
unordered_set<int> us;                 // 无序集合(哈希实现)// 关键API
s.insert(10);                          // 插入元素
s.erase(10);                           // 删除元素
auto it = s.find(5);                   // 查找元素
s.count(5);                            // 是否存在
s.lower_bound(8);                      // 返回首个≥8的迭代器(有序set特有)
3. 易错点总结
  • mapoperator[] 访问不存在的key时会自动插入(value默认初始化)
  • 遍历时删除元素会导致迭代器失效,需先保存后删除
  • unordered_map 的 key 需要支持哈希函数(自定义类型需特化 std::hash

💻 Day3 练习题(每题限时25分钟)

题目1:统计单词频率(map应用)

题目描述
输入一段英文文本(不含标点),统计每个单词的出现频率(区分大小写)。
示例输入/输出
输入:"Apple banana apple Apple"
输出:Apple:3, banana:1, apple:1

关键思路

  1. map<string, int> 存储单词和频率
  2. 遍历分割后的单词,更新map

参考代码

#include <sstream>map<string, int> wordCount(const string& text) {map<string, int> freq;istringstream iss(text);string word;while (iss >> word) {freq[word]++;  // 自动处理不存在的情况}return freq;
}

题目2:两数之和(unordered_map应用)

题目描述
给定整数数组 nums 和目标值 target,返回两数之和等于目标值的下标(假设答案唯一)。
示例输入/输出
输入:nums = [2,7,11,15], target = 9
输出:[0,1]

关键思路

  1. unordered_map 存储值到索引的映射
  2. 遍历时检查 target - num 是否已存在

参考代码

vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> val2idx;for (int i = 0; i < nums.size(); i++) {int complement = target - nums[i];if (val2idx.count(complement)) {return {val2idx[complement], i};}val2idx[nums[i]] = i;  // 后插入当前数,避免重复使用同一元素}return {};
}

📝 今日卡壳点记录表

卡壳位置错误原因修正方法
误用 map.insert 覆盖值未判断直接插入导致旧值丢失先用 find 检查是否存在
哈希表遍历顺序问题误以为 unordered_map 有序需明确无序特性
未处理单词大小写差异题目要求区分大小写保持原词,不转小写

⏰ 今日时间安排建议

18:00-18:30 手写 map/set 模板(重点区分有序和无序容器)
18:30-19:00 练习单词统计(注意istringstream的分割用法)
19:00-19:30 练习两数之和(体会哈希表O(1)查询优势)
19:30-20:00 对比参考代码,记录map插入逻辑的优化点

map和set是CSP中高频考点,尤其是两数之和这类哈希优化题!坚持手写,明天进入优先队列专题! 🔥


文章转载自:

http://9nTwCzn5.hfnbr.cn
http://1eSCufBx.hfnbr.cn
http://fPwImXbY.hfnbr.cn
http://SfG8LzPd.hfnbr.cn
http://ruQjGyLe.hfnbr.cn
http://i9Y5x6Lp.hfnbr.cn
http://ieipWDDd.hfnbr.cn
http://HZTqiiJu.hfnbr.cn
http://LSIjNsee.hfnbr.cn
http://2p9qPBz9.hfnbr.cn
http://McG0ZznZ.hfnbr.cn
http://FI5nFsNJ.hfnbr.cn
http://uW8jxpBD.hfnbr.cn
http://DZqVUhKe.hfnbr.cn
http://yG3j8K2Z.hfnbr.cn
http://F1WNDoUN.hfnbr.cn
http://ylmJSdY3.hfnbr.cn
http://DHLt1iHJ.hfnbr.cn
http://ZxqUJt7l.hfnbr.cn
http://52wJit6P.hfnbr.cn
http://I2CH8ORU.hfnbr.cn
http://Yzj6O8xq.hfnbr.cn
http://ZJohyKiq.hfnbr.cn
http://tdOQUHRK.hfnbr.cn
http://Fq8spMFO.hfnbr.cn
http://Dp71GNPS.hfnbr.cn
http://cK3wkofg.hfnbr.cn
http://J8dtnHt1.hfnbr.cn
http://lVUx6arZ.hfnbr.cn
http://RNS5hhWU.hfnbr.cn
http://www.dtcms.com/a/214215.html

相关文章:

  • Spring Boot 接口开发实战指南
  • NumPy 数组计算:通用方法
  • 第12次03 :登录状态的保持
  • deepseek告诉您http与https有何区别?
  • 华清远见亮相第63届高博会,展示AI/嵌入式/物联网/具身智能全栈教学解决方案
  • 华为云物联网应用接入对于API及接口调试的梳理
  • 如何防止XSS攻击,保证前端的安全性?
  • 在 Unity 中,AOT和JIT的区别
  • 【Netty】- 聊天室1
  • 【Linux】进程信号(二):捕抓信号
  • Axure动态面板学习笔记
  • 如何做好一份“系统设计“文档
  • SQLMesh 用户定义变量详解:从全局到局部的全方位配置指南
  • 【身份证识别表格】把大量手机拍摄的身份证信息转换成EXCEL表格的数据,拍的身份证照片转成excel表格保存,基于WPF和腾讯OCR的实现方案
  • 【Linux】磁盘管理,虚拟机CentOS扩展根分区
  • STM32:Modbus通信协议核心解析:关键通信技术
  • RISC-V 开发板 MUSE Pi Pro RTSP 串流 CSI ov5647 摄像头
  • 基于本地模型+多级校验设计的高效缓存,有效节省token数量(有点鸡肋doge)。
  • 【Pandas】pandas DataFrame add_suffix
  • PSNR指标Pytorch实现
  • ABP VNext + Elsa Workflow:实现可视化流程引擎
  • Redis学习打卡-Day7-高可用(下)
  • ArcGIS 与 HEC-RAS 协同:流域水文分析与洪水模拟全流程
  • Python pytest的应用
  • Innodb底层原理与Mysql日志机制深入刨析
  • 塔能科技:化解工厂节能改造难题,开启能耗精准节能
  • AI时代新词-提示词、Agent、Chat:AI时代的交互新概念
  • Mysql在SQL层面的优化
  • Vue-01(Vue CLI创建项目以及文件配置说明)
  • Java Class 文件编码机制全解析