leetcode-Intersection of Two Arrays II-350
2016-07-19 21:49
567 查看
求模板类的交集,这次是真正的交集,不删除重复元素
原先想把两个模板类的元素放进multiset中,然后用set_intersetion求交集,但是OUTPUT LIMIT EXCEED,可能是输出的容器容量小的原因(猜测)
所以只能用笨办法
刚才看到一位网友的方法,简洁有效,http://www.cnblogs.com/grandyang/p/5533305.html ,当时怎么没想到一边比较一边删除,且向这种对不好用数组计数的记得用map
class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
unordered_map<int, int> m;
vector<int> res;
for (auto a : nums1) ++m[a];
for (auto a : nums2) {
if (m[a]-- > 0) res.push_back(a);
}
return res;
}
};
原先想把两个模板类的元素放进multiset中,然后用set_intersetion求交集,但是OUTPUT LIMIT EXCEED,可能是输出的容器容量小的原因(猜测)
所以只能用笨办法
/* 1,1,2,3,4,4 这题要注意的是这种情况 1,4,4,4 */ class Solution { public: vector<int> intersect(vector<int>& nums1, vector<int>& nums2) { // sort(nums1.begin(), nums1.end()); // sort(nums2.begin(), nums2.end()); // vector<int> ans(100000); //容量小了? // vector<int>::iterator it; // it=set_intersection(nums1.begin(), nums1.end(), nums2.begin(), nums2.end(), ans.begin()); // return ans; multiset<int> s1(nums1.begin(), nums1.end()), s2(nums2.begin(), nums2.end()); vector<int> ans; multiset<int>::iterator it1=s1.begin(), it2=s1.begin(), it=s2.begin(); while(it!=s2.end()){ if(s1.count(*it)){ int mi=min(s1.count(*it), s2.count(*it)); ans.insert(ans.begin(), mi, *it); it=s2.upper_bound(*it); } else{ it++; } } return ans; } };
刚才看到一位网友的方法,简洁有效,http://www.cnblogs.com/grandyang/p/5533305.html ,当时怎么没想到一边比较一边删除,且向这种对不好用数组计数的记得用map
class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
unordered_map<int, int> m;
vector<int> res;
for (auto a : nums1) ++m[a];
for (auto a : nums2) {
if (m[a]-- > 0) res.push_back(a);
}
return res;
}
};
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解