题目

给定两个数组,编写一个函数来计算它们的交集。

1、暴力双for循环

class Solution {public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {vector<int> result;vector<int> res;if(nums1.size()==0 || nums2.size()==0) return result;for(int i=0;i<nums1.size();i++){for(int j=0;j<nums2.size();j++){if(nums1[i] ==nums2[j]) res.push_back(nums1[i]);}}if(res.size()==0) return result;sort(res.begin(),res.end());//进行去重for(int i=0;i<res.size()-1;i++){if(res[i]!=res[i+1]) result.push_back(res[i]);}result.push_back(res[res.size()-1]);return result;}
};

2、利用哈希集合加速

容器的选择

1、map/multimap的几个特点以及操作

元素包含两部分(key,value),key和value可以是任意类型
根据元素的key自动对元素排序,因此根据元素的key可以进行很快定位
不能直接改变元素的key,可以通过[ ]直接存取元素值
map中不允许key相同的元素,multimap允许key相同的元素

操作 效果
map.c 产生空的map
c.size() 返回元素个数
count(key) 返回键值==key的元素个数
find(key) 返回键值==key 的第一个元素,找不到的话返回end
lower_bound(key) 返回键值>=key的第一个元素
upper_bound(key) 返回键值>key的第一个元素
equal_range(key) 返回键值==key的元素区间
c.insert(pos,e) 在pos位置为起点插入e的副本,并返回新元素的位置
c.erase(val) 移除所有值为val的元素,返回移除元素个数

2、set/multiset的几个特点

set使用平衡二叉树管理元素(红黑树)
set的每个元素值必须唯一,系统会自动将数据排序。他支持插入、删除、查找等操作,所有的操作都在logN时间之内完成,效率比较高。
set和multiset的区别是:set插入的元素不能相同,而multiset可以相同 操作指令同map

代码

class Solution {public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {unordered_set<int> result;//构建nums1的哈希集合,自动去重,//set(集合)是将容器内所有元素都能更具其键值自动排序,set元素的键值就是实值。set不允许两个元素有相同的键值unordered_set<int> nums1_res(nums1.begin(),nums1.end());for(int i=0;i<nums2.size();i++){//在哈希集合中寻找是否存在nums2[i]的元素,如果是的把这个元素放入result的哈希表中if(nums1_res.find(nums2[i])!=nums1_res.end())result.insert(nums2[i]);            //在集合中插入元素(自动去重处理)    }return vector<int>(result.begin(),result.end()); }
};

leetcode 349. 两个数组的交集 思考分析相关推荐

  1. LeetCode -349 两个数组的交集

    难度:简单 给定两个数组 nums1 和 nums2 ,返回它们的交集 .输出结果中的每个元素一定是唯一 的.我们可以不考虑输出结果的顺序 . 题目链接 LeetCode -349 两个数组的交集 S ...

  2. 两个对象数组交集_yiduobo的每日leetcode 349.两个数组的交集 amp;amp; 350.两个数组的交集II...

    祖传的手艺不想丢了,所以按顺序写一个leetcode的题解.计划每日两题,争取不卡题吧 349.两个数组的交集https://leetcode-cn.com/problems/intersection ...

  3. LeetCode 349 两个数组的交集

    349. 两个数组的交集 难度简单476收藏分享切换为英文接收动态反馈 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] ...

  4. LeetCode 349. 两个数组的交集【哈希表】

    349. 两个数组的交集 给定两个数组 nums1 和 nums2 ,返回 它们的交集 .输出结果中的每个元素一定是 唯一 的.我们可以 不考虑输出结果的顺序 . 示例 1: 输入:nums1 = [ ...

  5. LeetCode 349. 两个数组的交集(哈希)

    1. 题目 给定两个数组,编写一个函数来计算它们的交集. 示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2] 示例 2:输入: nums1 = [4,9 ...

  6. leetcode 349. 两个数组的交集 两种方案,c语言实现

    如题: 给定两个数组,编写一个函数来计算它们的交集.示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2]示例 2: 输入: nums1 = [4,9,5 ...

  7. 13. Leetcode 349. 两个数组的交集 (数组-分离双指针)

    给定两个数组,编写一个函数来计算它们的交集.示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2:输入:nums1 = [4,9,5], nums2 ...

  8. Leetcode 349. 两个数组的交集 (每日一题 20211014)

    给定两个数组,编写一个函数来计算它们的交集.示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2:输入:nums1 = [4,9,5], nums2 ...

  9. Leetcode 349. 两个数组的交集 解题思路及C++实现

    解题思路: 先对数组进行排序,然后从小到大去找相同的元素. 程序大循环是遍历两个数组. 循环体内,当找到相等的数之后,要注意跳过重复的数字. class Solution { public:vecto ...

最新文章

  1. raid模式_基于网络的磁盘热备技术|网络RAID-1
  2. php 动态输出图片尺寸,高并发下 php 输出图像对性能开销大不大?
  3. java中random的头文件_JAVA中的Random()函數
  4. 又一道软通动力7K月薪面试题——银行业务调度系统
  5. Hi3515支持NFS-ROOT启动
  6. html中.inner样式,JavaScript-DOM动态控制Html标签对象样式和innerHTML、className属性
  7. lnmp mysql 自动关闭_mysql总是自动停止 日志提示Plugin ‘FEDERATED’ is disabled的解决办法...
  8. 【图像增强】python图像数据增强
  9. Irrlicht引擎例子说明及中文链接
  10. 高等数学第六版下册答案
  11. 计算机配置显示器,电脑怎么配置多台显示器
  12. 2020中青杯A题集成电路通道布线数学建模全过程论文及程序
  13. python winrar 密码_python+winrar 指令压缩文件
  14. JavaMail学习6 发送邮件
  15. 计算机打字速成,计算机汉字输入五笔字型打字速成.pdf
  16. 删除shipyard
  17. python get rect 函数_Python之Pygame.rect函数
  18. [数分笔记]关于有限覆盖定理
  19. 云和恩墨加入京东云“云筑计划”,共筑PaaS新生态
  20. python之numpy数组的花式索引

热门文章

  1. java字符串学习_java之字符串学习记录
  2. java 并发 面试_Java 并发基础常见面试题总结
  3. 计算机共享盒子,电脑之间如何共享文件
  4. 液位单闭环实验计算机控制,过程控制实验指导书
  5. python中的大数据品牌运营专业公司_国内最好的专业数据分析公司有哪些?
  6. 达梦数据库卡慢简单分析
  7. c语言指针自定义函数,c语言函数指针定义,指针函数和函数指针的区别
  8. Html5画布(canvas)实例之绘制矩形
  9. centos7安装openjdk8
  10. 洛谷-P1160 队列安排