C++ - map 的 例题

 前言

本博客在 一下文章关于 map 和 set 讲解之下,对 map 当中的 operator[] ()函数的功能运用,感受 map 功能强大。

 
 

349. 两个数组的交集 - 力扣(LeetCode)

给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。

示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的

法一: 

我们可以,两个集合当中的内容都放进 两个 set 当中,第一个是 去重,第二是排序,好查找。然后,去两个set 一个一个遍历比较,有相同的就是交集。

法二:

还有比 法一 更好的方法,开始也都把两个集合放到 两个 set 当中。然后中序遍历保存结果,比如是下面两个结果:

1 3 5 7 9
3 5 6 7 8

 然后,遍历不再想上述一样暴力查找,而是:

都从第一位置开始,值小的一方开始++,直到遍历到相同元素停止,找到交集:

 第一次找到 3  ,停止。然后两个指针同时++,都之下下一个元素位置。

然后重复上述过程就可以找出交集。

当然,还可以用上述方法寻找差集

 代码实现:

class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {set<int> s1(nums1.begin(),nums1.end());set<int> s2(nums2.begin(),nums2.end());vector<int> v;auto it1 = s1.begin();auto it2 = s2.begin();while(it1 != s1.end() && it2 != s2.end()){if(*it1 < *it2){it1++;}else if(*it2 < *it1){it2++;}else{v.push_back(*it1);++it1;++it2;}}return v;}
};

 上述这种方法可以用在服务器当中:
 

 上述这种模型当中,手机等等终端经常和 服务器 进行数据的比对,比如判断交集以外的数据,当手机当中有 服务器当中没有的 数据的时候,就需要上传到 服务器当中。这些本质是都是一些数据比对。使用上述 用 set 的方式是非常好的方法。

 
20. 有效的括号 - 力扣(LeetCode)

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

 在上图当中可以感受一些 ,C++有了 map 之后 相比于 C 语言的是实现有多么好用。

而且,对于 c 当中硬性的括号判断,C++当中map 只需要多增加几个结点就可以了。C中中硬性的括号判断很冗余。

 138. 复制带随机指针的链表 - 力扣(LeetCode)

 C语言当中的实现过程可以看下面这篇博客:
赋值带随机指针的链表-CSDN博客

 以下是C++当中利用 map 的key 和 value 来实现的映射关系。

class Solution {
public:Node* copyRandomList(Node* head) {map<Node*, Node*> CopyNodeMap;  // key 值存储 原链表当中的结点// value 值存储 新链表当中结点// 两边位置相对一样Node* copyhead = nullptr, *copytail = nullptr;// 先构建新链表,构建 next 指针Node* cur = head;while(cur){Node* copyNode = new Node(cur->val);if(copyhead == nullptr){copyhead = copytail = copyNode;}else{copytail->next = copyNode;copytail = copytail->next;}// 添加新表和旧表映射关系CopyNodeMap[cur] = copytail;cur = cur->next;}// 新表当中 random赋值cur = head;Node* copyptr = copyhead;while(cur){if(cur->random == nullptr)copyptr->random = nullptr;elsecopyptr->random = CopyNodeMap[cur->random];cur = cur->next;copyptr = copyptr->next;}return copyhead;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/108871.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

9.14号作业

仿照vector手动实现自己的myVector&#xff0c;最主要实现二倍扩容功能 有些功能&#xff0c;不会 #include <iostream>using namespace std; //创建vector类 class Vector { private:int *data;int size;int capacity; public://无参构造Vector(){}//拷贝构造Vector(c…

【C++】常用算术生成算法

0.前言 1.accumulate #include <iostream> using namespace std;// 常用算术生成算法 #include<vector> #include<numeric> //accumulate 的调用头文件void test01() {vector<int>v;for (int i 0; i < 100; i){v.push_back(i);}int total accumu…

【zlm】 webrtc源码讲解

目录 前端WEB 服务器收到请求 服务端的处理 播放 拉流 参考文章 前端WEB 服务器收到请求 POST /index/api/webrtc?applive&streamtest&typeplay HTTP/1.1 HttpSession::onRecvHeaderHttpSession::Handle_Req_POSTHttpSession::Handle_Req_POSTif (totalConte…

Java反射机制简单入门

标题 反射能干嘛获取Class对象的三种方式下面开始重点&#xff0c;需要掌握获取类的构造器并进行操作获取成员变量获取成员方法 这块建议先听第一个视频入门&#xff0c;第二个视频深入了解 视频学习地址1 视频学习地址1 正射:知道某个类&#xff0c;类的地址&#xff0c;通过…

水一下文章

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

云服务器下如何部署Django项目详细操作步骤

前期本人完成了“编写你的第一个 Django 应用程序”&#xff0c;有了一个简单的项目代码&#xff0c;在本地window系统自测没问题了&#xff0c;接下来就想办法部署到服务器上&#xff0c;可以通过公网访问我们的Django项目。将开发机器上运行的开发版软件实际安装到服务器上进…

华三路由交换技术基础——计算机网络基础

计算机网络&#xff1a; 定义&#xff1a;一组具有自治权的计算机互联的集合 作用&#xff1a; 1.共享信息资源 2.分解式处理信息 4.负载均衡 5.综合信息服务 它是计算机技术与通信技术的两个领域的结合 一&#xff0c;计算机网络中的基本概念&#xff1a; 局域网&#xff…

springboot MongoDB 主从 多数据源

上一篇&#xff0c;我写了关于用一个map管理mongodb多个数据源&#xff08;每个数据源&#xff0c;只有单例&#xff09;的内容。 springboot mongodb 配置多数据源 临到部署到阿里云的测试环境&#xff0c;发现还需要考虑一下主从的问题&#xff0c;阿里云买的数据库&#x…

ChatGPT 和 Elasticsearch:APM 工具、性能和成本分析

作者&#xff1a;LUCA WINTERGERST 在本博客中&#xff0c;我们将测试一个使用 OpenAI 的 Python 应用程序并分析其性能以及运行该应用程序的成本。 使用从应用程序收集的数据&#xff0c;我们还将展示如何将 LLMs 成到你的应用程序中。 在之前的博客文章中&#xff0c;我们构建…

DOM渲染与优化 - CSS、JS、DOM解析和渲染阻塞问题

文章目录 DOM渲染面试题DOM的渲染过程DOM渲染的时机与渲染进程的概述浏览器的渲染流程1. 解析HTML生成DOM树&#xff1a;遇到<img>标签加载图片2. 解析CSS生成CSSOM(CSS Object Model): 遇见背景图片链接不加载3. 将DOM树和CSSOM树合并生成渲染树&#xff1a;加载可视节点…

windows mysql8.0主从配置

windows mysql8.0主从配置 一、安装两个MySQL并配置 1. 主库配置my.ini&#xff0c;我的主库是安装版 [mysqld] # 设置mysql的安装目录 basedirD:\\soft\\mysql-5.7.39 # 设置mysql数据库的存放目录 datadirD:\\soft\\mysql-5.7.39\\data #设置3306端口 port3306 #主服务器…

SAP ABAP基础知识 访问外部数据库-开发篇

前言 本文主要介绍通过ABAP语言访问外部数据库的几种方式 一、外部数据库配置 本文示例中的代码访问了两个外部数据库 MTD : 外部oracle数据库,其中示例表 ZTTEMP 字段( ZZTNO,WERKS) S4Q : 外部HANA数据库(开发系统访问测试系统的数据库), 使用表USR02,ZTTEMP 二、ABAP访问…