Day3 记忆内容:map set 高频操作
以下是 第三天 的详细学习内容,聚焦 map
和set
的高效应用,重点突破查找类题型和去重逻辑,助你提升代码效率!
📚 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. 易错点总结
map
的operator[]
访问不存在的key时会自动插入(value默认初始化)- 遍历时删除元素会导致迭代器失效,需先保存后删除
unordered_map
的 key 需要支持哈希函数(自定义类型需特化std::hash
)
💻 Day3 练习题(每题限时25分钟)
题目1:统计单词频率(map应用)
题目描述
输入一段英文文本(不含标点),统计每个单词的出现频率(区分大小写)。
示例输入/输出
输入:"Apple banana apple Apple"
输出:Apple:3, banana:1, apple:1
关键思路
- 用
map<string, int>
存储单词和频率 - 遍历分割后的单词,更新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]
关键思路
- 用
unordered_map
存储值到索引的映射 - 遍历时检查
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中高频考点,尤其是两数之和这类哈希优化题!坚持手写,明天进入优先队列专题! 🔥
相关文章:
Day3 记忆内容:map set 高频操作
以下是 第三天 的详细学习内容,聚焦 map和set的高效应用,重点突破查找类题型和去重逻辑,助你提升代码效率! 📚 Day3 记忆内容:map & set 高频操作 1. map 核心操作(手写3遍) /…...

初等数论--Garner‘s 算法
0. 介绍 主要通过混合积的表示来逐步求得同余方程的解。 对于同余方程 { x ≡ v 0 ( m o d m 0 ) x ≡ v 1 ( m o d m 1 ) ⋯ x ≡ v k − 1 ( m o d m k − 1 ) \begin{equation*} \begin{cases} x \equiv v_0 \quad (\ \bmod \ m_0)\\ x \equiv v_1 \quad (\ \bmod \ m_1)…...

NV211NV212美光科技颗粒NV219NV220
NV211NV212美光科技颗粒NV219NV220 技术架构解析:从颗粒到存储系统 近期美光科技发布的NV211、NV212、NV219、NV220系列固态颗粒,凭借其技术突破引发行业关注。这些颗粒基于176层QLC堆叠工艺,单Die容量预计在2026年可达1Tb,相当…...

SQL解析工具JSQLParser
目录 一、引言二、JSQLParser常见类2.1 Class Diagram2.2 Statement2.3 Expression2.4 Select2.5 Update2.6 Delete2.7 Insert2.8 PlainSelect2.9 SetOperationList2.10 ParenthesedSelect2.11 FromItem2.12 Table2.13 ParenthesedFromItem2.14 SelectItem2.15 BinaryExpressio…...

Wave Terminal + Cpolar:SSH远程访问的跨平台实战+内网穿透配置全解析
文章目录 前言1. Wave Terminal安装2. 简单使用演示3. 连接本地Linux服务器3.1 Ubuntu系统安装ssh服务3.2 远程ssh连接Ubuntu 4. 安装内网穿透工具4.1 创建公网地址4.2 使用公网地址远程ssh连接 5. 配置固定公网地址 前言 各位开发者朋友,今天为您介绍一款颠覆性操…...

html使用JS实现账号密码登录的简单案例
目录 案例需求 思路 错误案例及问题 修改思路 案例提供 所需要的组件 <input>标签,<button>标签,<script>标签 详情使用参考:HTML 教程 | 菜鸟教程 案例需求 编写一个程序,最多允许用户尝试登录 3 次。…...
sorted() 函数和sort()函数的区别
在Python中,sorted() 函数和列表的 sort() 方法都用于排序,但它们之间有一些关键的区别: 返回值: sorted():返回一个新的列表,包含所有排序后的元素,原始列表不会被修改。sort():对列…...
Solr搜索:比传统数据库强在哪?
Solr 是一个基于 Apache Lucene 的开源搜索平台,广泛用于全文检索和数据分析。与传统的关系型数据库查询相比,Solr 在某些方面具有明显的优势,特别是在处理大规模文本数据和复杂的搜索需求时。以下是 Solr 相对于传统数据库查询的主要优势&am…...

【数据集】基于ubESTARFM法的100m 地温LST数据集(澳大利亚)
目录 数据概述一、输入数据与处理二、融合算法1. ESTARFM(Enhanced STARFM)2. ubESTARFM(Unbiased ESTARFM)代码实现数据下载参考根据论文《Generating daily 100 m resolution land surface temperature estimates continentally using an unbiased spatiotemporal fusion…...

51c自动驾驶~合集55
我自己的原文哦~ https://blog.51cto.com/whaosoft/13935858 #Challenger 端到端碰撞率暴增!清华&吉利,框架:低成本自动生成复杂对抗性驾驶场景~ 自动驾驶系统在对抗性场景(Adversarial Scenarios)中的可靠性是安全落…...

【前端基础】Promise 详解
文章目录 什么是 Promise?为什么要使用 Promise?创建 Promise消费 Promise (使用 Promise)1. .then(onFulfilled, onRejected)2. .catch(onRejected)3. .finally(onFinally) Promise 链 (Promise Chaining)Promise 的静态方法1. Promise.resolve(value)2…...

高性能管线式HTTP请求
高性能管线式HTTP请求:原理、实现与实践 目录 高性能管线式HTTP请求:原理、实现与实践 1. HTTP管线化的原理与优势 1.1 HTTP管线化的基本概念 关键特性: 1.2 管线化的优势 1.3 管线化的挑战 2. 高性能管线式HTTP请求的实现方案 2.1 技术选型与工具 2.2 Java实现:…...
c/c++的opencv膨胀
使用 OpenCV (C) 进行图像膨胀操作详解 图像膨胀 (Dilation) 是形态学图像处理中的另一种基本操作,与腐蚀操作相对应。它通常用于填充图像中的小孔洞、连接断开的物体部分、以及加粗二值图像中的物体。本文将详细介绍膨胀的原理,并演示如何使用 C 和 Op…...
react native搭建项目
React Native 项目搭建指南 React Native 是一个使用 JavaScript 和 React 构建跨平台移动应用的框架。以下是搭建 React Native 项目的详细步骤: 1. 环境准备 安装 Node.js 下载并安装 Node.js (推荐 LTS 版本) 安装 Java Development Kit (JDK) 对于 Androi…...

【CSS】九宫格布局
CSS Grid布局(推荐) 实现代码: <!doctype html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0"…...

Python用Transformer、Prophet、RNN、LSTM、SARIMAX时间序列预测分析用电量、销售、交通事故数据
原文链接: tecdat.cn/?p42219 在数据驱动决策的时代,时间序列预测作为揭示数据时序规律的核心技术,已成为各行业解决预测需求的关键工具。从能源消耗趋势分析到公共安全事件预测,不同领域的数据特征对预测模型的适应性提出了差异…...

java基础(面向对象进阶高级)泛型(API一)
认识泛型 泛型就等于一个标签(比如男厕所和女厕) 泛型类 只能加字符串: 把别人写好的东西,自己封装。 泛型接口 泛型方法、泛型通配符、上下限 怎么解决下面的问题? API object类 toString: equals: objects类 包装类 为什么上面的Integer爆红…...

学习心得(17--18)Flask表单
一. 认识表单:定义表单类 password2中末端的EqualTo(password)是将密码2与密码1进行验证,看是否相同 二.使用表单: 运行 如果遇到这个报错,就在该页面去添加 下面是举例: 这就是在前端的展示效…...
AI测试和敏捷测试有什么联系与区别?
AI测试与敏捷测试作为软件质量保障领域的两种重要方法,既有紧密联系也存在显著区别。以下是两者的联系与区别分析: 一、联系 共同目标:提升测试效率与质量 敏捷测试强调通过快速迭代、持续反馈和团队协作确保交付价值,而AI测试通…...

微信小程序进阶第2篇__事件类型_冒泡_非冒泡
在小程序中, 事件分为两种类型: 冒泡事件, 当一个组件上的事件被触发后,该事件会向父节点传递非冒泡事件, 当一个组件上的事件被触发后, 该事件不会向父节点传递。 一 冒泡事件 tap, touchst…...

电机控制学习笔记
文章目录 前言一、电机二、编码器三、开环控制和闭环控制总结 前言 学习了解电机控制技术的一些原理和使用的方法。 一、电机 直流有刷电机 操作简单 使用H桥驱动直流有刷电机 直流有刷电机驱动板 电压检测 电流检测以及温度检测 直流无刷电机 使用方波或者正弦波进行换向…...
什么是前端工程化?它有什么意义
前端工程化是指通过工具、流程和规范,将前端开发从手工化、碎片化的模式转变为系统化、自动化和标准化的生产过程。其核心目标是 提升开发效率、保障代码质量、增强项目可维护性,并适应现代复杂 Web 应用的需求。 一、前端工程化的核心内容 1. 模块化开发 代码模块化:使用 …...

企业网站架构部署与优化-Nginx性能调优与深度监控
目录 #1.1Nginx性能调优 1.1.1更改进程数与连接数 1.1.2静态缓存功能设置 1.1.3设置连接超时 1.1.4日志切割 1.1.5配置网页压缩 #2.1nginx的深度监控 2.1.1GoAccess简介 2.1.2nginx vts简介 1.1Nginx性能调优 1.1.1更改进程数与连接数 (1)进程数 进程数…...

行列式的线性性质(仅限于单一行的加法拆分)
当然可以,以下是经过排版优化后的内容,保持了原始内容不变,仅调整了格式以提升可读性: 行列式的线性性质(加法拆分) 这个性质说的是:如果行列式的某一行(或某一列)的所有…...

JAVA基础编程练习题--50道
一:循环结构 1.1 for循环 水鲜花数 (1)题目 (2)难点 如何获取三位数的个位数 如何计算一个数的立方 判断两数值是否相等 (3)代码 最大公约数 (1)题目 (2&…...

leetcode 93. Restore IP Addresses
题目描述 93. Restore IP Addresses 代码 回溯法 class Solution {vector<string> res; public:vector<string> restoreIpAddresses(string s) {string IP;int part 0;backtracking(s,0,IP,part);return res;}void backtracking(const string &s,int start…...
【东枫科技】基于Docker,Nodejs,GitSite构建一个KB站点
Docker 安装桌面版本,安装Node镜像 运行node镜像 需求 和外部的某个文件夹地址可以绑定端口可以绑定,方便server的访问 docker run -itd --name node-test -v C:/Users/fs/Documents/GitHub:/home/node -p 3000:3000 node进入终端 docker exec -it …...

pytest+allure+allure-pytest 报告输出遇到的问题汇总
文章目录 前言问题一:module allure has no attribute severity_level问题二:ERROR:file or directory not found: ‐vs问题三:生成的 html 报告是空的,明明有测试用例执行完成,但报告没有显示数据 前言 pytestallure…...
Python基础语法(十四):Python常用内置模块及功能
Python标准库提供了丰富的内置模块,无需额外安装即可使用。以下是按功能分类的常用内置模块及其核心功能: 一、文件与操作系统交互 1. os 模块 功能:操作系统接口常用方法:os.getcwd() # 获取当前工作目录 os.listdir() …...

【Opencv+Yolo】_Day1图像基本处理
目录 一、计算机中的视觉: 二、Opencv基本操作: 图片基础处理: 视频基本处理: 图像截取(截取,合并,只保留一个元素) 图像填充 数值计算 图像融合 阈值判断 图像平滑 图像腐…...