两个数组的交集(C++实现)

news2024/11/22 22:36:27

两个数组的交集

  • 题目
  • 思路
  • 代码
  • 代码讲解
  • 总结和意义
    • 交集和差集思路
    • 意义

题目

在这里插入图片描述

思路

利用set容器的特性对输入的两个整数向量进行排序和去重操作,然后使用两个迭代器在有序的两个set容器中进行遍历,找出两个向量的交集,并将交集元素存储在结果向量中返回。

在这里插入图片描述

代码

 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)
            {
                v.push_back(*it1);
                it1++;
                it2++;
            }
            else if(*it1>*it2)
            {
                it2++;
            }
            else
            {
                it1++;
            }
        }
        return v;
    }

代码讲解


set<int> s1(nums1.begin(),nums1.end())

创建了一个整数类型的set容器s1,并使用nums1向量中的元素初始化s1。set容器会自动对元素进行排序,并且只会存储唯一的元素,去除重复项。因此,这行代码实现了对nums1向量的排序和去重操作。


set<int> s2(nums2.begin(),nums2.end())

创建了另一个整数类型的set容器s2,并使用nums2向量中的元素初始化s2。同样地,这行代码实现了对nums2向量的排序和去重操作。


vector<int> v

定义了一个整数向量v,用于存储交集结果。


auto it1=s1.begin()auto it2=s2.begin()

创建了两个迭代器it1和it2,分别指向s1和s2容器的起始位置。


while(it1!= s1.end() && it2!=s2.end())

在it1没有到达s1容器的末尾,并且it2没有到达s2容器的末尾的条件下,执行循环。


  • if(*it1==*it2):如果it1指向的元素等于it2指向的元素,表示找到了一个交集元素。

  • v.push_back(*it1):将交集元素添加到结果向量v中。
    it1++和it2++:将两个迭代器分别向后移动一位,继续寻找下一个交集元素

  • else if(*it1>*it2):如果it1指向的元素大于it2指向的元素,表示it2指向的元素在s1容器中没有匹配项,需要将it2向后移动一位。

  • else:如果it1指向的元素小于it2指向的元素,表示it1指向的元素在s2容器中没有匹配项,需要将it1向后移动一位。

循环结束后,返回存储了交集结果的向量v。

总结和意义

交集和差集思路

在这里插入图片描述


在这里插入图片描述

意义

交集
交集是指两个集合中共有的元素构成的新集合。在实践中,交集可以用于寻找共同的属性、特征或关联项。例如,在数据库中,交集操作可以用于查询满足多个条件的记录。
在数据分析和统计中,交集可以用于比较两个数据集之间的相似性或重叠程度。通过计算交集的大小或比例,可以评估两个数据集的共同部分,并进行进一步的分析和推断。

差集:
差集是指一个集合中去除另一个集合中包含的元素后剩余的元素构成的新集合。在实践中,差集可以用于排除或过滤掉不需要的元素。例如,在数据处理中,可以使用差集操作从一个数据集中排除另一个数据集中的特定元素。
在集合运算和逻辑推理中,差集可以用于确定两个集合之间的差异或不同之处。通过分析差集的内容,可以发现集合之间的独特成员或特殊属性。
总之,交集和差集是对集合中元素关系进行处理和分析的有力工具。它们可以帮助我们寻找共同性、相似性、重叠性以及区别和差异,并在各种实践场景中提供有用的信息和洞见。

(本题完)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS:浏览器设置placeholder样式 / 微信小程序设置placeholder样式

一、web 设置placeholder 设置浏览器的placeholder样式 ::-webkit-input-placeholder { /* WebKit browsers */color: #999; } :-moz-placeholder { /* Mozilla Firefox 4 to 18 */color: #999; } ::-moz-placeholder { /* Mozilla Firefox 19 */color: #999; } :-ms-input-p…

JavaScript编程基础 – 对象

JavaScript编程基础 – 对象 JavaScript Programming Essentials – Object 本文简要介绍JavaScript面向对象编程&#xff0c;如何实现其中的对象以及实例演示&#xff0c;希望对大家学习JavaScript有所帮助。 1. 面向对象编程特点 面向对象编程(Object-Oriented Programmi…

万字长文 - Python 日志记录器logging 百科全书 - 高级配置之 日志文件配置

万字长文 - Python 日志记录器logging 百科全书 - 高级配置之 日志文件配置 前言 在 Python 的logging模块中&#xff0c;它不仅提供了基础的日志功能&#xff0c;还拥有一系列高级配置选项来满足复杂应用的日志管理需求。 说到logging 模块的高级配置&#xff0c;必须提及日…

STM32_7(ADC)

一、ADC ADC&#xff08;Analog-Digital Converter&#xff09;模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁12位逐次逼近型ADC&#xff0c;1us转换时间输入电压范围&#xff1a;0~3.3V&#xff0c;…

命名空间、字符串、布尔类型、nullptr、类型推导

面向过程语言&#xff1a;C ——> 重视求解过程 面向对象语言&#xff1a;C ——> 重视求解的方法 面向对象的三大特征&#xff1a;封装、继承和多态 C 和 C 在语法上的区别 1、命名空间&#xff08;用于解决命名冲突问题&#xff09; 2、函数重载和运算符重载&#xf…

C语言进阶之路-基本数据小怪篇

目录 一、学习目标&#xff1a; 二、数据基本类型 整型 浮点型 / 实型 字符 字符串 布尔型数据 三、重要的杂七杂八知识点 常量与变量 标准输入 sizeof运算符&#xff1a; 类型转换 数据类型的本质 整型数据尺寸 可移植性整型 拿下第一个C语言程序 总结 一、学…

MySQL数据库主从集群搭建

快捷查看指令 ctrlf 进行搜索会直接定位到需要的知识点和命令讲解&#xff08;如有不正确的地方欢迎各位小伙伴在评论区提意见&#xff0c;博主会及时修改&#xff09; MySQL数据库主从集群搭建 主从复制&#xff0c;是用来建立一个和主数据库完全一样的数据库环境&#xff0c…

win10安装pytorch(py39)

cuda≤11.6&#xff0c;观察控制面板 观察torch对应cuda版本 https://download.pytorch.org/whl/torch/ 安装cuda11.6.0 CUDA Toolkit Archive | NVIDIA Developer cmd输入nvcc -V 编辑国内镜像源 .condarc anaconda prompt输入 查看环境 conda env list 安装py3.9…

LedControl 库说明文档

LedControl 库最初是为基于 8 位 AVR 处理器的 Arduino 板编写的。但由于该代码不使用处理器的任何复杂的内部功能&#xff0c;因此具有高度可移植性&#xff0c;并且应该在任何支持 和 功能的 Arduino&#xff08;类似&#xff09;板上pinMode()运行digitalWrite() 。 单个 M…

中电金信:守【政】创新,探路保险数字化转型“新范式”

11月23日&#xff0c;CIIP2023中国保险科技创新合作大会在京举办。大会汇集保险科技领域行业专家、学者、国内外头部险企及保险科技公司负责人等各界人士&#xff0c;立足保险行业高质量发展和创新驱动理念&#xff0c;寻找行业数字化转型新动能、新视角&#xff0c;为保险科技…

【基础知识】AB软件RSLinx如何实现OPC通讯组态

哈喽&#xff0c;大家好&#xff0c;我是雷工。 在上一节了解了什么是RSLinx&#xff1f;以及RSLinx Lite、RSLinx Classice、RSLinx Professional、RSLinx Gateway几个版本的特点。 本节了解AB的RSLinx如何实现OPC组态。 一、创建RSLinx通讯&#xff1a; 1.1、【Communicati…

vue2项目从0搭建(三):配置环境变量及对应的webpack配置

前言 实际业务开发中,一个项目很可能会同时配置好几套环境。 比如:常规开发环境,开发测试环境,正式的测试环境,预发测试环境,客户甲的生产环境,客户乙的生产环境,通用生产环境,独立应用环境,微前端环境,大屏专用环境,移动端环境。 一女多嫁的实际业务场景,就需要我们进行多样…

mac上Homebrew的安装与使用

打开终端&#xff1a;command空格 &#xff0c;搜索‘’终端 ’&#xff0c;打开终端 在终端中输入以下命令并按下回车键&#xff1a; /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"这个命令会自动下载并安装…

某60区块链安全之未初始化的存储指针实战二学习记录

系列文章目录 文章目录 系列文章目录未初始化的存储指针实战二实验目的实验环境实验工具实验原理实验内容实验过程EXP利用 未初始化的存储指针实战二 实验目的 学会使用python3的web3模块 学会分析以太坊智能合约未初始化的存储指针漏洞 找到合约漏洞进行分析并形成利用 实验…

win11渗透武器库,囊括所有渗透工具

开箱即用&#xff0c;最全的武器库&#xff0c;且都是2023年11月最新版&#xff0c;后续自己还可以再添加&#xff0c;下载地址&#xff1a;https://download.csdn.net/download/weixin_59679023/88565739 服务连接 信息收集工具 端口扫描 代理抓包 漏洞扫描 指纹识别 webshel…

apipost接口200状态码,浏览器控制台500状态码

后端 url 登录login方法 login(){this.$refs.loginForm.validate(async valid > {if (!valid) return// 由于data属性是一个json对象&#xff0c;需要进行解构赋值{data:result}&#xff0c;进行状态码判断const {data: result} await this.$http.post(/api/doLogin,this.…

解决在Windows10或Windows11下无权限修改hosts文件

解决在Windows10或Windows11下无权限修改hosts文件&#xff0c;无法写入内容 1、首先在开始菜单中找到这个 2、接着输入&#xff1a; C:\Windows\System32\drivers\etc3、再次输入以下命令行&#xff1a;notepad hosts &#xff0c;并回车&#xff1a; notepad hosts 4、然后…

Java专题(二)反射

反射概述 Java 反射就是在运行的状态下&#xff0c;对于任意一个类&#xff0c;都能知道这个类的任意的属性和方法&#xff0c;并且能调用这些方法或者改变这些类的属性&#xff0c;因此 Java 被称为准动态语言。 动态语言和静态语言 上面说了 Java 是准动态的语言&#xff0c…

面向对象三大特性,类与接口,java重写与重载,对象相等的判断, hashCode 与 equals

文章目录 2.1 面向对象三大特性2.1.1 封装 继承 多态2.1.2 其中Java 面向对象编程三大特性&#xff1a;封装 继承 多态2.1.3 关于继承如下 3 点请记住&#xff1a;2.1.4 什么是多态机制&#xff1f;Java语言是如何实现多态的&#xff1f;2.1.5 Java实现多态有三个必要条件&…

电脑中提示关于ntdll.dll错误怎么办,解决出现ntdll.dll错误的办法

ntdll.dll是Windows操作系统的一个关键系统文件&#xff0c;它包含了许多核心函数和系统调用&#xff0c;对于系统的稳定运行至关重要。然而&#xff0c;有时我们可能会遇到ntdll.dll报错的问题&#xff0c;导致程序无法正常运行。那么今天就和大家谈谈电脑中提示关于ntdll.dll…