leetcode——Intersection of Two Arrays
2016-09-13 00:11
337 查看
原题目:
Given two arrays, write a function to compute their intersection.
Example:
Given nums1 =
Note:
Each element in the result must be unique.
The result can be in any order.
解析:题目要求找出两个数组的交集。实现方法很多,下面介绍两种方法:
(1)先对两个数组进行排序,之后用两个初始为0的变量j,k分别指向两个数组,若nums1[j]=nums2[k],则将值加到结果中,因为nums1和nums2中元素可能重复,故应当增加j或k的值,使得nums1[j] != nums2[k];若nums1[j] < nums2[k],则j加1;否则另k加1。算法复杂度等于排序复杂度,即为O(nlogn)。
(2)利用集合set,先将其中一个数组的元素存进一个集合中,之后判断另一个集合中任一元素是否在集合中,在的话将该值加进结果中,并删去set中相应元素,防止重复。由于Set的添加及搜索复杂度为O(logn),算法复杂度为O(nlogn)。
Given two arrays, write a function to compute their intersection.
Example:
Given nums1 =
[1, 2, 2, 1], nums2 =
[2, 2], return
[2].
Note:
Each element in the result must be unique.
The result can be in any order.
解析:题目要求找出两个数组的交集。实现方法很多,下面介绍两种方法:
(1)先对两个数组进行排序,之后用两个初始为0的变量j,k分别指向两个数组,若nums1[j]=nums2[k],则将值加到结果中,因为nums1和nums2中元素可能重复,故应当增加j或k的值,使得nums1[j] != nums2[k];若nums1[j] < nums2[k],则j加1;否则另k加1。算法复杂度等于排序复杂度,即为O(nlogn)。
class Solution { public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { vector<int> v; sort(nums1.begin(), nums1.end()); sort(nums2.begin(), nums2.end()); int j=0, k=0, l1=nums1.size(), l2=nums2.size(); while(j<l1 && k<l2) { if(nums1[j] == nums2[k]) { v.push_back(nums1[j++]); while(j<l1 && nums1[j]==nums1[j-1]) j ++; } else if(nums1[j] < nums2[k]) j ++; else k ++; } return v; } };
(2)利用集合set,先将其中一个数组的元素存进一个集合中,之后判断另一个集合中任一元素是否在集合中,在的话将该值加进结果中,并删去set中相应元素,防止重复。由于Set的添加及搜索复杂度为O(logn),算法复杂度为O(nlogn)。
class Solution { public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { set<int> s; vector<int> v; for(int i=0; i<nums1.size(); i++) if(s.find(nums1[i]) == s.end()) s.insert(nums1[i]); for(int i=0; i<nums2.size(); i++) if(s.find(nums2[i]) != s.end()) { v.push_back(nums2[i]); s.erase(nums2[i]); } return v; } };
相关文章推荐
- LeetCode Intersection of Two Arrays
- leetcode 350 Intersection of Two Arrays II C++
- 【leetcode】Intersection of Two Arrays
- LeetCode Intersection of Two Arrays(Set去重)
- 【leetcode】Intersection of Two Arrays II
- [LeetCode][Python]Intersection of Two Arrays
- leetcode_350 Intersection of Two Arrays II
- [python][leetcode]Intersection of Two Arrays II
- leetcode Intersection of Two Arrays II
- LeetCode-349 Intersection of Two Arrays
- [LeetCode] Intersection of Two Arrays
- leetcode Intersection of Two Arrays
- [LeetCode][Python]Intersection of Two Arrays II
- [easy]【leetcode】【java】 Intersection of Two Arrays II 两个数组的交集
- Leetcode 349 Intersection of Two Arrays
- 【leetcode】Intersection of Two Arrays
- leetcode 349 Intersection of Two Arrays C++
- [LeetCode] Intersection of Two Arrays 两个数组相交
- leetcode之 Intersection of Two Arrays
- LeetCode 349 Intersection of Two Arrays