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

LeetCode 349题解 | 两个数组的交集

两个数组的交集

  • 一、题目链接
  • 二、题目
  • 三、分析
  • 四、编写代码

一、题目链接

349.两个数组的交集

二、题目

在这里插入图片描述

三、分析

法一:
去重+查找:先对两个数组用set去重,再遍历其中一个数组看这个数组中的元素在另一个数组中出现的次数若为1,那么就push_back到vector< int >里。

法二:
找交集可以用去重+遍历的比对算法:依次比较,小的++;相等的就是交集,同时++。其中一个结束就结束了。(这个算法思路还可以用在找差集:依次比较。小的就是差集,小的++;相等就同时++。其中一个结束就结束了,没结束的那个剩下的元素也是差集。)算法效率比法一高,只需遍历一遍,时间复杂度是O(N)。
在这里插入图片描述

四、编写代码

// 法一
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;for (auto e : s1){// 查找if (s2.count(e)){v.push_back(e);}}return v;}
};
// 法二
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());auto it1 = s1.begin(), it2 = s2.begin();vector<int> v;while (it1 != s1.end() && it2 != s2.end()){if (*it1 < *it2){++it1;}else if (*it1 > *it2){++it2;}else{v.push_back(*it1);++it1, ++it2;}}return v;}
};
http://www.lqws.cn/news/544843.html

相关文章:

  • 苍穹外卖day5--Redis设置店铺营业状态
  • 基于ubuntu 22.04环境安装NEURON仿真器
  • jenkins中执行python脚本导入路径错误
  • 跟着AI学习C#之项目实战-电商平台 Day3
  • 《聊一聊ZXDoc》之汽车服务导向SOME/IP
  • 自动登录脚本神器-Mac电脑实现自动登录堡垒机并自动输入账号密码跳转不同机器环境
  • uniapp处理后端返回的html字符串
  • spring-security-oauth2系列:自定义认证服务器
  • 为什么python处理csv文件将某个值替换成另一个值并另存后,csv文件的大小减小了一半
  • Nginx 与 Apache:有什么区别?哪种服务器最适合您?
  • 【数据挖掘】数据采集和预处理
  • 如何确保京东商品数据采集的准确性和及时性?
  • 【lua】Linux上安装lua和luarocks包管理工具
  • 提升AI准确性的关键:精准添加上下文
  • 【NodeJs】【npm】npm安装electron报错
  • Python Async 编程快速入门 | 超简明异步协程指南
  • C++常用算法解析:sort、find、for_each、copy
  • 阶段二开始-第一章—8天Python从入门到精通【itheima】-116节(封装)
  • cuda编程笔记(5)--原子操作
  • UI前端与数字孪生结合案例分享:智慧零售的可视化解决方案
  • 北京燃气集团管道腐蚀智能预测实践:LSTM算法驱动能源设施安全升级
  • VSCode中创建和生成动态库项目
  • 智能呼叫系统五大核心模式解析
  • 使用mitmdump实现高效实时抓包处理:从原理到实践
  • 技术博客:如何用针孔相机模型理解图像
  • 基于Redis分布式的限流
  • 一款专业的顽固软件卸载工具
  • ubuntu下利用Qt添加相机设备并运行arm程序
  • GO 语言学习 之 变量和常量
  • 神经形态计算与人工智能的融合:从生物启发到智能跃迁的IT新纪元