map函数的题目应用 一.map函数1.map可以提供高效的查找、插入、删除2.基本特性唯一键值每个key只能出现一次自动排序元素总是按key排序高效查找基于key的查找时间复杂度为O(log⁡2n)键不可修改key是const的value可以修改二.相关题目力扣205 1309计蒜客T1271 T3603三.题目分析1力扣205. 同构字符串解题思路先判断两字符串长度长度不一样直接返回false创建两个映射数组维护双向映射​ 数组a记录 s字符 → t字符​ 数组b记录 t字符 → s字符依次遍历每一对对应字符​ 如果两边字符都还没建立映射互相绑定​ 如果已经存在映射检查是否和当前字符匹配匹配冲突 → 直接返回false。class Solution { public: bool isIsomorphic(string s, string t) { int l1s.size(); int l2t.size(); if(l1!l2)return false;//长度不同必不可能是同构字符串 //a数组映射s字符-t字符 //b数组映射t字符-s字符 char a[150]{0},b[150]{0}; for(int i0;il1;i){ // 当前s[i]、t[i]都还没有建立映射关系 if(a[s[i]]0b[t[i]]0){ a[s[i]]t[i]; b[t[i]]s[i]; } else{ // 已经存在映射校验双向映射是否匹配 if( a[s[i]]!t[i]||b[t[i]]!s[i])return false; } } return true; } };2力扣1309. 解码字母到整数映射解题思路从左向右遍历字符串不使用for自带i手动控制下标移动优先判断当前位置往后第2位有没有 #​ 有 # 说明是两位数编码读取两位数字转换成字母下标 i 3 ​ 没有 # 单个数字编码直接转换下标 i 1 class Solution { public: string freqAlphabets(string s) { string ans; // 从头遍历字符串 for(int i0;is.size();) { // 判断后面第2位存在并且是#代表是两位数编码(10#~26#) if(i2s.size()s[i2]#){ // 算出两位数字数值 int num(s[i]-0)*10s[i1]-0; // 数字转字母 1-a ansanum-1; // 两位数占3个字符 i i1 #直接跳3格 i3; } else{ // 单个数字编码1~9 ansa(s[i]-0)-1; // 只走1位 i; } } return ans; } };3计蒜客T1271分析题目可得能长度≥3的完美子数组只有两类所有元素余数 r 0 - K为偶数所有元素余数 r K/2其余合法组合只能最多两个元素一对 r 和 K-r。解题思路1.求所有数字模K的余数统计每个余数出现次数优先计算可以形成长数组的两种情况余数0、余数K/2(K偶数)如果这两组任意一组元素数量≥2直接输出这个数量最优解若上面两组最多只有1个数说明不可能构造长度≥3的子数组遍历余数查找是否存在一对 (r , K-r) - 存在答案2 - 不存在输出-1#includebits/stdc.h using namespace std; int main(){ int n,k; cinnk; mapint,intcnt; for(int i0;in;i){ long long x; cinx; int rx%k;//计算数字%k的余数 cnt[r]; } int anscnt[0];// 余数0的集合内部任意两数满足条件 // k偶数时余数k/2的集合 if(k%20){ ansmax(ans,cnt[k/2]); } if(ans2){ coutansendl; return 0; } // 走到这里最长集合最多1个元素只能尝试寻找一对(r, k-r)组成长度2 int m0; for(auto p:cnt){ int rp.first; int tk-r; if(rt)continue;//0和k/2已经讨论过跳过 if(cnt.count(t)){ //同时存在r和k-r能凑出一对 m1; break; } } if(m1)cout2endl; else cout-1endl; return 0; }4计蒜客T3603这道题意思比较清楚步骤比较多一步一步跟着题意走即可#includebits/stdc.h using namespace std; mapint ,intidurg; mapint,inturgid; setinturgset; int main() { ios::sync_with_stdio(false); cin.tie(0); int n; cinn; while(n--){ int op; cinop; if(op1){ int id,urg; cinidurg; idurg[id]urg; urgid[urg]id; urgset.insert(urg); } else if(op2){ if(urgset.empty()){ couterror\n; continue; } int minurg*urgset.begin(); int pidurgid[minurg]; coutpidendl; urgset.erase(minurg); idurg.erase(pid); urgid.erase(minurg); } else if(op3){ if(urgset.empty()){ couterror\n; continue; } int maxurg*urgset.rbegin(); int pidurgid[maxurg]; coutpidendl; urgset.erase(maxurg); idurg.erase(pid); urgid.erase(maxurg); } else if(op4){ int id,newurg; cinidnewurg; int oldurgidurg[id]; urgset.erase(oldurg); urgid.erase(oldurg); idurg[id]newurg; urgid[newurg]id; urgset.insert(newurg); } else if(op5){ int newid,urg; cinnewidurg; int oldidurgid[urg]; idurg.erase(oldid); idurg[newid]urg; urgid[urg]newid; } else if(op6){ int id; cinid; if(!idurg.count(id))couterror\n; else coutidurg[id]endl; } else if(op7){ int urg; cinurg; if(!urgid.count(urg))couterror\n; else couturgid[urg]endl; } } return 0; }

相关新闻

最新新闻

数组作为函数参数为什么要多传一个长度_Day10

数组作为函数参数为什么要多传一个长度_Day10

数组作为函数参数为什么要多传一个长度?——Day10 学习记录,从数组传参到日历打印 学完函数之后,我开始用函数封装各种功能。但很快就遇到了问题——把数组传给函数后,用 sizeof 计算长度,结果根本不是数组的大小。 后…

2026/7/26 8:27:23
windows网络适配器驱动开发-开发 WiFiCx 客户端驱动程序(八)

windows网络适配器驱动开发-开发 WiFiCx 客户端驱动程序(八)

电源策略更改对于电源管理,客户端驱动程序使用 NETPOWERSETTINGS 对象 ,例如其他类型的 NetAdapterCx 客户端驱动程序。为了在系统处于工作状态(S0)状态时支持设备闲置,驱动程序调用 WdfDeviceAssignS0IdleSettings 并…

2026/7/26 8:27:23
DPO技术如何优化AIGC图像生成审美表现

DPO技术如何优化AIGC图像生成审美表现

1. 项目概述:DPO技术如何重塑AIGC审美维度最近在调试Stable Diffusion模型时发现一个有趣现象:同样的提示词,经过DPO(Direct Preference Optimization)调优后的模型产出图像,在构图和色彩协调性上明显优于传…

2026/7/26 8:27:23
大语言模型集成前必问的6个关键问题:从业务场景到技术落地的系统评估

大语言模型集成前必问的6个关键问题:从业务场景到技术落地的系统评估

在技术团队考虑引入大语言模型(LLM)时,很多决策者容易被其强大的生成能力吸引,却忽略了前期评估的重要性。盲目集成LLM可能导致项目偏离实际需求、资源浪费甚至技术债堆积。本文基于多个落地案例,梳理出六个关键评估问…

2026/7/26 8:27:23
用“舞台换景”讲清 Docker 的 Restart 与 Recreate

用“舞台换景”讲清 Docker 的 Restart 与 Recreate

最近更新一个 Docker 服务时,我遇到了一个问题。 镜像拉取成功,容器也重新启动了,整个过程没有任何报错: docker compose pull app docker compose restart app可打开页面一看,显示的仍然是 V1。 第一反应通常是&#…

2026/7/26 8:27:23
OpenClaw在macOS平台的深度适配与优化实践

OpenClaw在macOS平台的深度适配与优化实践

1. 项目背景与核心价值OpenClaw作为一款高效的数据抓取工具,在Windows和Linux平台已有成熟应用。但在macOS生态中,由于系统架构差异和权限管理机制的特殊性,其部署和运行一直存在兼容性问题。这次我们针对Mac平台进行了深度适配,实…

2026/7/26 8:22:14

月新闻