算法-哈希表篇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),在时间上优化了算法。

相关推荐
txinyu的博客6 分钟前
map和unordered_map的性能对比
开发语言·数据结构·c++·算法·哈希算法·散列表
搞笑症患者21 分钟前
压缩感知(Compressed Sensing, CS)
算法·最小二乘法·压缩感知·正交匹配追踪omp·迭代阈值it算法
im_AMBER25 分钟前
Leetcode 101 对链表进行插入排序
数据结构·笔记·学习·算法·leetcode·排序算法
快手技术42 分钟前
AAAI 2026|全面发力!快手斩获 3 篇 Oral,12 篇论文入选!
前端·后端·算法
颜酱44 分钟前
前端算法必备:滑动窗口从入门到很熟练(最长/最短/计数三大类型)
前端·后端·算法
做科研的周师兄1 小时前
【MATLAB 实战】栅格数据 K-Means 聚类(分块处理版)—— 解决大数据内存溢出、运行卡顿问题
人工智能·算法·机器学习·matlab·kmeans·聚类
X在敲AI代码1 小时前
leetcodeD3
数据结构·算法
踩坑记录1 小时前
leetcode hot100 560.和为 K 的子数组 medium 前缀和 + 哈希表
leetcode
码农小韩1 小时前
基于Linux的C++学习——循环
linux·c语言·开发语言·c++·算法
CoderCodingNo1 小时前
【GESP】C++五级/四级练习(双指针/数学) luogu-P1147 连续自然数和
开发语言·c++·算法