Intersection of Two Arrays II两个数组交集(重要!)
来源:互联网 发布:seo教程下载 编辑:程序博客网 时间:2024/05/29 19:52
https://leetcode.com/problems/intersection-of-two-arrays-ii/
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.
Follow up:
- 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?
思路是用map记录数和nums1中每个数出现的次数的映射;
nums2中出现一次,这个次数减1
class Solution {public:vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {vector<int> res;if (nums1.size() == 0 || nums2.size() == 0){return res;}unordered_map<int,int> m;for (int n : nums1){m[n]++;//注意利用map这种索引取值的特性}for (int n : nums2){if (m.count(n) && m[n] > 0){res.push_back(n);m[n]--;}}return res;}};
现在回答
- What if the given array is already sorted? How would you optimize your algorithm?
思路是用两个指针分别指向两个数组开头,相等则加入结果,两个指针都增加;
不等的话小的指针增加;
直到有一个指针达到末尾;
class Solution {public:vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {vector<int> res;if (nums1.size() == 0 || nums2.size() == 0){return res;}int i1 = 0, i2 = 0;while (i1 < nums1.size() && i2 < nums2.size()){if (nums1[i1] == nums2[i2]){res.push_back(nums1[i1]);i1++; i2++;}else if (nums1[i1] < nums2[i2]){i1++;}else{i2++;}}return res;}};
2 0
- Intersection of Two Arrays II两个数组交集(重要!)
- LeetCode 350. Intersection of Two Arrays II(数组交集)
- 350. Intersection of Two Arrays II (求两个数组的交集,包含重复元素)
- [LeetCode] Intersection of Two Arrays II 两个数组的交集II
- [LeetCode]350. Intersection of Two Arrays II(求两个数组交集 II)
- [easy]【leetcode】【java】 Intersection of Two Arrays II 两个数组的交集
- leetcode-350 Intersection of Two Arrays II 求两个数组的交集 面试见到了吗?
- leetcode 350. Intersection of Two Arrays II 两个数组的交集
- Leetcode:350. Intersection of Two Arrays II 求两个数组的交集
- 349. Intersection of Two Arrays 两个数组交集
- 349. Intersection of Two Arrays | 找两个数组的交集
- [LeetCode] Intersection of Two Arrays 两个数组的交集
- Leetcode :Intersection of Two Arrays 两个数组的交集
- Intersection of Two Arrays II--求交集
- 349. Intersection of Two Arrays (求两个数组的交集,不包含重复元素)
- LeetCode 349. Intersection of Two Arrays(数组交集)
- 【leetcode75】Intersection of Two Arrays(数组的交集)
- 350. Intersection of Two Arrays II | 查找两个数组重复
- 算法学习第一天-搭建能运行算法第四版的代码
- Windows系统三种定时器的分析
- 容器及组件设计思想
- ubuntu14.04 ssh的安装及使用方法
- cocos2dx基础概念(一)
- Intersection of Two Arrays II两个数组交集(重要!)
- Non-Mathematical Feature Engineering techniques for Data Science
- Node.js 吊炸天的文件操作
- Nexus搭建
- android 面试
- bat转换成exe
- 01、css引入方式
- 模拟实现 memmove
- Fragment使用小记