LeetCodeAnimation/notes/LeetCode第349号问题:两个数组的交集.md
2019-05-02 16:23:13 +08:00

75 lines
1.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# LeetCode 349 号问题两个数组的交集
> 本文首发于公众号五分钟学算法[图解 LeetCode ](<https://github.com/MisterBooo/LeetCodeAnimation>)系列文章之一。
>
> 个人网站[https://www.cxyxiaowu.com](https://www.cxyxiaowu.com)
题目来源于 LeetCode 上第 349 号问题两个数组的交集题目难度为 Easy目前通过率为 62.3%
### 题目描述
给定两个数组编写一个函数来计算它们的交集
**示例 1:**
```
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2]
```
**示例 2:**
```
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [9,4]
```
**说明:**
- 输出结果中的每个元素一定是唯一的
- 我们可以不考虑输出结果的顺序
### 题目解析
容器类 [set](https://zh.cppreference.com/w/cpp/container/set) 的使用。
- 遍历 num1通过 set 容器 record 存储 num1 的元素
- 遍历 num2 record 中查找是否有相同的元素如果有 set 容器 resultSet 进行存储
- resultSet 转换为 vector 类型
### 动画描述
![](https://bucket-1257126549.cos.ap-guangzhou.myqcloud.com/20190502123122.gif)
### 代码实现
```
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
set<int> record;
for(int i = 0; i < nums1.size(); i ++){
record.insert(nums1[i]);
}
set<int> resultSet;
for(int i = 0; i < nums2.size();i++){
if(record.find(nums2[i]) != record.end()){
resultSet.insert(nums2[i]);
}
}
vector<int> resultVector;
for(set<int>::iterator iter=resultSet.begin(); iter != resultSet.end();iter++){
resultVector.push_back(*iter);
}
return resultVector;
}
};
```
![](https://bucket-1257126549.cos.ap-guangzhou.myqcloud.com/blog/fz0rq.png)