[LeetCode] 350. Intersection of Two Arrays II 两个数组相交之二
Given two arrays, write a function to compute their intersection.
Example 1:
Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2,2]
Example 2:
Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output: [4,9]
Note:
- Each element in the result should appear as many times as it shows in both arrays.
 - The result can be in any order.
 
Follow up:
- What if the given array is already sorted? How would you optimize your algorithm?
 - What if nums1's size is small compared to nums2's size? Which algorithm is better?
 - What if elements of nums2 are stored on disk, and the memory is limited such that you cannot load all elements into the memory at once?
 
解法一:
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]-- > ) res.push_back(a);
        }
        return res;
    }
};
再来看一种方法,这种方法先给两个数组排序,然后用两个指针分别指向两个数组的起始位置,如果两个指针指的数字相等,则存入结果中,两个指针均自增1,如果第一个指针指的数字大,则第二个指针自增1,反之亦然,参见代码如下:
解法二:
class Solution {
public:
    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
        vector<int> res;
        int i = , j = ;
        sort(nums1.begin(), nums1.end());
        sort(nums2.begin(), nums2.end());
        while (i < nums1.size() && j < nums2.size()) {
            if (nums1[i] == nums2[j]) {
                res.push_back(nums1[i]);
                ++i; ++j;
            } else if (nums1[i] > nums2[j]) {
                ++j;
            } else {
                ++i;
            }
        }
        return res;
    }
};
Github 同步地址:
https://github.com/grandyang/leetcode/issues/350
类似题目:
Find Common Characters
参考资料:
https://leetcode.com/problems/intersection-of-two-arrays-ii/
https://leetcode.com/problems/intersection-of-two-arrays-ii/discuss/82269/Short-Python-C%2B%2B
[LeetCode] 350. Intersection of Two Arrays II 两个数组相交之二的更多相关文章
- [LeetCode] 350. Intersection of Two Arrays II 两个数组相交II
		
Given two arrays, write a function to compute their intersection. Example 1: Input: nums1 = [1,2,2,1 ...
 - [LintCode] Intersection of Two Arrays II 两个数组相交之二
		
Given two arrays, write a function to compute their intersection.Notice Each element in the result s ...
 - [LeetCode] Intersection of Two Arrays II 两个数组相交之二
		
Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, 2, 1] ...
 - 350 Intersection of Two Arrays II 两个数组的交集 II
		
给定两个数组,写一个方法来计算它们的交集.例如:给定 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].注意: 输出结果中每个元素出现的次数, ...
 - 26. leetcode 350. Intersection of Two Arrays II
		
350. Intersection of Two Arrays II Given two arrays, write a function to compute their intersection. ...
 - LeetCode 350. Intersection of Two Arrays II (两个数组的相交之二)
		
Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, 2, 1] ...
 - LeetCode 350. Intersection of Two Arrays II
		
Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, 2, 1] ...
 - Python [Leetcode 350]Intersection of Two Arrays II
		
题目描述: Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, ...
 - LeetCode 349. Intersection of Two Arrays (两个数组的相交)
		
Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, 2, 1] ...
 
随机推荐
- 在Windows下的virtualenv中搭建Flask+MySQLDb开发环境
			
virtualenv和Flask的安装前面已经介绍过了,这里主要讲如何在venv中安装MySQL 安装MySQLdb 下载MySQL-python-1.2.3.win32-py2.7.exe并安装. ...
 - redis之通信协议
			
Redis 协议将传输的结构数据分为 5 种最小单元类型,单元结束时统一加上回车换行符号\r\n. 1.单行字符串 以 + 符号开头. 2.多行字符串 以 $ 符号开头,后跟字符串长度. 3.整数值 ...
 - Kubernetes 远程工具连接k8s集群
			
Kubernetes 远程工具连接k8s集群 1.将Master的kubectl文件复制到Node内 scp k8s/kubernetes/server/bin/kubectl root@192.16 ...
 - tsconfig.json配置项详解
			
{ "compilerOptions": { "allowUnreachableCode": true, // 不报告执行不到的代码错误. "allo ...
 - Oracle 查询练习
			
非常经典的一些日常醒脑练习内容!! 如有更高效的写法欢迎赐教! .已知Oracle的Scott用户中提供了三个测试数据库表,名称分别为dept,emp和salgrade.使用SQL语言完成以下操作 ) ...
 - C变量和常量
			
变量定义 变量定义就是告诉编译器如何创建变量的储存,以及在何处创建变量的储存,变量定义指定了一个数据类型,并包含一个或者多个变量的列表: type variable_list //如: int i; ...
 - 关联mysql失败_Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezon' 时区错误
			
时区错误,MySQL默认的时区是UTC时区,比北京时间晚8个小时. 所以要修改mysql的时长 在mysql的命令模式下,输入: set global time_zone='+8:00'; 再次连接成 ...
 - android studio学习----gradle基础
			
Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言. 安装Gradle 在And ...
 - 团队作业第3周——需求改进&系统设计
			
目录 团队作业第3周--需求改进&系统设计 1.需求&原型改进 2.系统设计 3.Alpha任务分配计划 4.测试计划 1 测试术语 4.2 有关项目人员组成 2 任务概述 3.测试策 ...
 - jQuery基础的动画里面的回调函数
			
<style> *{margin:0; padding:0;} #target{ border-radius:10px; background:#eee; } .fade{/*动画起始状态 ...