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

两个数组的交集

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

 

思路:

        由于这道题目,输出结果中的每个元素一定是唯一的,也就是说输出的结果的去重的, 同时可以不考虑输出结果的顺序,我们可以采用数组或者set来做。

        但是要注意,使用数组来做哈希的题目,是因为题目都限制了数值的大小。

        而这道题目没有限制数值的大小,就无法使用数组来做哈希表了。

        而且如果哈希值比较少、特别分散、跨度非常大,使用数组就造成空间的极大浪费。

        此时就要使用另一种结构体了,set ,关于set,C++ 给提供了如下三种可用的数据结构:

  • std::set
  • std::multiset
  • std::unordered_set

        std::set和std::multiset底层实现都是红黑树,std::unordered_set的底层实现是哈希表, 使用unordered_set 读写效率是最高的,并不需要对数据进行排序,而且还不要让数据重复,所以选择unordered_set。

代码如下:

class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {unordered_set<int> result_set; // 存放结果,之所以用set是为了给结果集去重unordered_set<int> nums_set(nums1.begin(), nums1.end());for (int num : nums2) {// 发现nums2的元素 在nums_set里又出现过if (nums_set.find(num) != nums_set.end()) {result_set.insert(num);}}return vector<int>(result_set.begin(), result_set.end());}
};

由于后面力扣修改题目,数组指定了1000以内包含1000,可以使用数组

数组代码:

class Solution {
public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {unordered_set<int> result_set; // 存放结果,之所以用set是为了给结果集去重int hash[1005] = {0}; // 默认数值为0for (int num : nums1) { // nums1中出现的字母在hash数组中做记录hash[num] = 1;}for (int num : nums2) { // nums2中出现话,result记录if (hash[num] == 1) {result_set.insert(num);}}return vector<int>(result_set.begin(), result_set.end());}
};
http://www.lryc.cn/news/61644.html

相关文章:

  • 原创文章生成器在线版-ai写作生成器
  • 打造高性能CSS的九个技巧我是这么做的
  • python tqdm教程
  • 深度学习 - 41.Word2vec、EGES 负采样实现 By Keras
  • 研发管理风险控制
  • 母婴品牌内容输出怎么做?“四板斧”送你
  • 【视频】视频存储技术
  • 【C/C++】MySQL 为什么选择 B+ 树作为底层数据结构
  • 17、嵌入式Servlet容器
  • 倾斜摄影三维模型转换3DTILTES格式遇到的常见问题
  • 手机如何访问电脑文件?(iOS和Android)
  • TI在物联网和AI边缘计算中落伍了吗?
  • LoadRunner参数化最佳实践:让你的性能测试更加出色!
  • 软件测试工程师需要达到什么水平才能顺利拿到 20k 无压力?
  • RabbitMQ-高级篇
  • 深度学习_Learning Rate Scheduling
  • snmp服务利用(端口:161、199、391、705、1993)
  • MyBatis(二)—— 进阶
  • 婚恋交友app开发中需要注意的安全问题
  • 相机的内参和外参介绍
  • Node【包】
  • CHAPTER 2: 《BACK-OF-THE-ENVELOPE ESTIMATION》 第2章 《初略的估计》
  • RocketMQ高级概念
  • eureka注册中心和RestTemplate
  • redis复制的设计与实现
  • Docker更换国内镜像源
  • 【网络编程】网络套接字,UDP,TCP套接字编程
  • 海斯坦普Gestamp EDI 需求分析
  • gpt写文章批量写文章-gpt3中文生成教程
  • HashMap实现原理