LintCode 两数组的交
2017-06-18 17:23
323 查看
1.描述
返回两个数组的交
注意事项
Each element in the result must be unique.
The result can be in any order.
样例
nums1 =
2.分析
本来返回的应该是[2,2],但要求返回的交必须是唯一的,因此要去掉重复元素。
set是关联容器,类似于集合,里面的元素不会重复,而且呈现为有序性
3.代码
class Solution {
public:
/**
* @param nums1 an integer array
* @param nums2 an integer array
* @return an integer array
*/
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
// Write your code here
set<int> s(nums1.begin(), nums1.end()), res;//此时s中存放去掉重复元素后的nums1
for(auto a : nums2)
{
if (s.count(a)) res.insert(a);//nums2中的元素若存在于s中说明是交放入res
}
return vector<int>(res.begin(), res.end());
}
};
4.总结
首先把nums1都放入set中,这样nums1中的重复元素已经被去除,再遍历nums2的元素看是否
存在于s中,若存在将该元素放入另一个set中,这样也保证没有重复,最后把得到的
set转化为vector返回。
返回两个数组的交
注意事项
Each element in the result must be unique.
The result can be in any order.
样例
nums1 =
[1, 2, 2, 1], nums2 =
[2, 2], 返回
[2].
2.分析
本来返回的应该是[2,2],但要求返回的交必须是唯一的,因此要去掉重复元素。
set是关联容器,类似于集合,里面的元素不会重复,而且呈现为有序性
3.代码
class Solution {
public:
/**
* @param nums1 an integer array
* @param nums2 an integer array
* @return an integer array
*/
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
// Write your code here
set<int> s(nums1.begin(), nums1.end()), res;//此时s中存放去掉重复元素后的nums1
for(auto a : nums2)
{
if (s.count(a)) res.insert(a);//nums2中的元素若存在于s中说明是交放入res
}
return vector<int>(res.begin(), res.end());
}
};
4.总结
首先把nums1都放入set中,这样nums1中的重复元素已经被去除,再遍历nums2的元素看是否
存在于s中,若存在将该元素放入另一个set中,这样也保证没有重复,最后把得到的
set转化为vector返回。
相关文章推荐
- lintcode&九章算法——No.50 数组剔除元素后的乘积 ? 待解决
- Lintcode——100. 删除排序数组中的重复数字
- lint_code 两数组的交
- lintcode 中等题:partition array 数组划分
- LintCode -- 最大子数组 III
- lintcode--41. 最大子数组
- LintCode-39. 恢复旋转排序数组
- 排颜色问题——数组 leetcode lintcode
- lintcode: 把排序数组转换为高度最小的二叉搜索树
- lintcode求两个数组的交出错
- LintCode(easy)两数组的交
- lintcode 两数组的交II
- lintcode 42 最大子数组 II 解析
- lintcode-44-最小子数组
- 排颜色问题——数组 leetcode lintcode
- lintcode 容易题:Remove Duplicates from Sorted Array 删除排序数组中的重复数字
- lintcode求两个数组的交出错
- 把排序数组转换为高度最小的二叉搜索树(LintCode)
- LintCode Remove Duplicates from Sorted Array II 删除排序数组中的重复数字 II
- LintCode-----31.数组划分