您的位置:首页 > 其它

LintCode 两数组的交

2017-06-18 17:23 323 查看
1.描述

返回两个数组的交

注意事项

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返回。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: