541人阅读 评论(0)

# 题目

Given two arrays, write a function to compute their intersection.

Example:
Given nums1 = [1, 2, 2, 1]nums2 = [2, 2], return [2, 2].

Note:

• Each element in the result should appear as many times as it shows in both arrays.
• The result can be in any order.

• What if the given array is already sorted? How would you optimize your algorithm?
• What if nums1's size is small compared to nums2's size? Which algorithm is better?
• What if elements of nums2 are stored on disk, and the memory is limited such that you cannot load all elements into the memory at once?

# 代码

#include <iostream>
#include <cstdlib>
#include <vector>
#include <map>

using namespace std;

class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
if (nums1.empty() || nums2.empty())
return vector<int>();

int l1 = nums1.size(), l2 = nums2.size();
map<int, int> m;
for (int i = 0; i < l1; ++i)
{
++m[nums1[i]];
}//for

vector<int> ret;
for (int i = 0; i < l2; ++i)
{
if (m[nums2[i]] > 0)
{
ret.push_back(nums2[i]);
--m[nums2[i]];
}//if
}//for

return ret;
}
};

int main()
{
vector<int> v1 = { 1,2,2,1 }, v2 = { 2,2 };
vector<int> ret = Solution().intersect(v1, v2);

system("pause");
return 0;
}
GitHub源码

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：704153次
• 积分：10230
• 等级：
• 排名：第1749名
• 原创：392篇
• 转载：49篇
• 译文：0篇
• 评论：190条
博客专栏
 LeetCode & LintCode 题解 文章：215篇 阅读：179818
 Python3爬虫之路 文章：10篇 阅读：95909
评论排行
最新评论