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

算法-哈希表篇02-两个数组的交集

两个数组的交集

力扣题目链接

题目描述

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

解题思路

我们使用一个哈希表来存储nums1中的元素,然后遍历数组nums2,并查找哈希表中是否含有该元素,如果含有则是两者交集,存储在ans数组中。

题解

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        vector<int> ans;
        unordered_set<int> us(nums1.begin(), nums1.end());
        for(int x : nums2){
            if(us.count(x)){
                ans.push_back(x);
                us.erase(x);
            }
        }

        return ans;
    }
};

总结

主要是要理解,这道题如果使用双循环遍历两个数组也是可以的,但是这样的作法时间复杂度为O(n2)n的平方,使用哈希表,查询效率为O(1)所以,总体的时间复杂度为O(n),在时间上优化了算法。


http://www.kler.cn/a/550034.html

相关文章:

  • 设计模式:状态模式
  • Linux alias使用
  • 人工智能 - 机器学习、深度学习、强化学习是人工智能领域的理论基础和方法论
  • LLM:GPT 系列
  • wed前端:实现页面中可以拖动的登录窗口
  • Flutter 添加 iOS widget 小组件
  • hbase合并队列超长问题分析
  • Word中打开开发工具【修改日期控件显示格式】
  • API网关基础知识总结
  • 前端知识速记—JS篇:JS数组方法
  • Word 里面嵌入DeepSeek
  • 高效构建与配置高可用负载均衡集群:从理论到实践的全面实施
  • 【落羽的落羽 数据结构篇】双向链表
  • 第四期书生大模型实战营-第5关-L2G5000
  • spring session、spring security和redis整合的简单使用
  • 框架ThinkPHP(小迪网络安全笔记~
  • Unity Shader Graph 2D - Procedural程序化图形之渐变的正弦波形
  • ElasticSearch详解
  • 【python语言应用】最新全流程Python编程、机器学习与深度学习实践技术应用(帮助你快速了解和入门 Python)
  • 在c#中虚方法和抽象类的区别