zoukankan      html  css  js  c++  java
  • 350. 两个数组的交集 II

    题目:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/

    分析:这道题与349类似,只是要元素可以出现重复,所有考虑使用"multiset";还可以考虑使用“排序+双指针”。

    代码1:

    C++版本:
    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
        multiset<int> s1(nums1.begin(), nums1.end());
        multiset<int> s2;
        for (auto& num : nums2) {
            if (s1.find(num) != s1.end()){
                s2.insert(num);
                s1.erase(s1.lower_bound(num));
            }
        }
        return vector<int> (s2.begin(), s2.end());
    }

    知识点:

    1、在multimap和multiset中查找元素:https://blog.csdn.net/jasonLee_lijiaqi/article/details/78596763

    2、multiset用法总结:https://blog.csdn.net/sodacoco/article/details/84798621

     代码2:

    C++版本:
    vector<int> intersect1(vector<int>& nums1, vector<int>& nums2) {
        sort(nums1.begin(), nums1.end());
        sort(nums2.begin(), nums2.end());
        int i = 0, j = 0;
        vector<int> result;
        while (i < nums1.size() && j < nums2.size()) {
            if (nums1[i] == nums2[j]) {
                result.push_back(nums1[i]);
                i++;
                j++;
            }
            else if (nums1[i] < nums2[j]) i++;
            else if (nums1[i] > nums2[j]) j++;
        }
        return result;
    }
  • 相关阅读:
    主成分分析
    8、特征选择
    7.逻辑回归实践
    6--逻辑回归
    《四分之四团队》:团队项目选题报告
    计算与软件工程 作业五
    计算与软件工程 作业四
    计算与软件工程 作业三
    计算与软件工程 作业二
    计算与软件工程作业一
  • 原文地址:https://www.cnblogs.com/wltree/p/15432358.html
Copyright © 2011-2022 走看看