给定两个数组,编写一个函数来计算它们的交集。

示例 1:

输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2,2]

示例 2:

输入: nums1 = [1,2,2,1], nums2 = [2]

输出: [2]

说明:

  • 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
  • 我们可以不考虑输出结果的顺序。
package com.dylan.practice.leetcode;

import java.util.*;

/**
* 两个数组交集
*
* @author xusucheng
* @create 2018-10-18
**/
public class Intersect {
public static int[] intersect(int[] nums1, int[] nums2) {
Map<Integer, Integer> counter = new HashMap<>();
List<Integer> list = new ArrayList<>();
//统计每个元素出现个数
for (int i = 0; i < nums1.length; i++) {
int num = nums1[i];
if (counter.containsKey(num)) {
counter.put(num, counter.get(num) + 1);
} else {
counter.put(num, 1);
}
}
//在第2个数组中查找,如果找到相同元素放入list中,同时计数减一
for (int i = 0; i < nums2.length; i++) {
int num = nums2[i];
if(counter.containsKey(num) && counter.get(num)>0){
counter.put(num, counter.get(num)-1);
list.add(num);
}
} int[] nums = new int[list.size()]; for (int i = 0; i < list.size(); i++) {
nums[i] = list.get(i);
} return nums;
} public static void main(String[] args) {
int[] nums1 = {1, 2, 2, 1};
int[] nums2 = {2};
int[] nums = intersect(nums1, nums2);
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
} }
}

输出:

2

【Map】【List】【数组】获得两个数组的交集的更多相关文章

  1. php数组相加 两个数组键名相同 后者不能覆盖前者

    array(“a”)+array(“b”)结果还是array(“a”) array(“a”)+array(“b”)的结果是 array(“a”) 因为,它们等效于array(“0″=>”a”)+ ...

  2. JS取出两个数组中不重复的值

    var array = [0, 1, 2, 3, 4, 'age', 6, 7, 8, 9]; var array2 = [0, 1, 'age', 6, 7, 8, 9]; var arr3 = [ ...

  3. 数组去重,排序,重复次数,两个数组合并,两个数组去重,map(),filter(),reduce()

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. 利用哈希map快速判断两个数组的交集

    在大多数情况,也就是一般的情况下,大家都能想出最暴力的解法,通常也就是采用遍历或者枚举的办法来解决问题. 该题需要找出两个数组的交集,最简单的一个办法就是用A数组里面的所有数去匹配B数组里面的数.假设 ...

  5. lintcode:两个数组的交

    题目 返回两个数组的交 样例 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2]. 解题 排序后,两指针找相等元素,注意要去除相同的元素 public class ...

  6. 2016网易实习生编程题:数组中两个数的和等于sum

    题目 找出数组中两个数的和等于sum的这两个数 解题 这个题目做过很多次了,利用HashMap,key为 sum-A[i] value为 i 当 加入HashMap时候A[i] 已经存在map中,ge ...

  7. javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、jQuery根据元素值删除数组元素的方)

    主要内容: 1.数组整体元素修改 2. 数组筛选 3.jquery 元素转数组 4.获取两个数组中相同部分或者不同部分 5.数组去重并倒序排序 6.数组排序 7.数组截取slice 8.数组插入.删除 ...

  8. js 合并两个数组对象

    项目背景是合并a = [{name:'dede'},{name:'jenny'}],  b = [{age:18},{age:19}]  合并成[{name:'dede',age:18},{name: ...

  9. JavaScript中的内置对象-8--1.Array(数组)-Array构造函数; 数组的栈方法; 数组的转换方法; 数组的操作方法; 删除-插入-替换数组项; ECMAScript为数组实例添加的两个位置方法;

    JavaScript内置对象-1Array(数组) 学习目标 1.掌握任何创建数组 2.掌握数值元素的读和写 3.掌握数组的length属性 如何创建数组 创建数组的基本方式有两种: 1.使用Arra ...

  10. python中将两个数组压缩成一个数组

    我们有时候会遇到一个问题将两个数组一一对应的压缩起来: 两个都是字符串: 列表解析[''.join(i) for i in zip(list_1, list_2)] map(lambda x,y:x+ ...

随机推荐

  1. linux环境C语言实现:h264与pcm封装成mp4视频格式

    前言 H.264是压缩过的数据,PCM是原始数据,MP4是一种视频封装格式.实际H.264与PCM不能直接合成MP4格式,因为音频格式不对.这里需要中间对音频做一次压缩处理.基本流程为:将PCM音频数 ...

  2. [转帖]django使用html渲染页面样式+数据库管理员的创建

    一.django页面渲染 1.在templates中创建html格式的文件-index.html,在该文件中添加body,设置样式,比如: <h1 style = "backgroun ...

  3. [转帖]Linux中的inode到底是什么

    https://www.jianshu.com/p/6aa4d7ef17de inode 是什么? 要了解 Linux 操作系统上的 inode 前,我们先来说说 Linux操作系统上的文件.对于 L ...

  4. CPU实际频率查看

    cat /sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_cur_freq

  5. Oracle存储过程的基本学习

    Oracle存储过程的基本学习 摘要 这个简要学习应该会分为上下两部分 第一部分是存储过程的学习. 第二部分是python的学习. 核心目标是查询Oracle数据库中的主键数据. 如果有主键upper ...

  6. [转帖]官网:Nacos的授权验证

    https://nacos.io/zh-cn/docs/v2/guide/user/auth.html 注意 Nacos是一个内部微服务组件,需要在可信的内部网络中运行,不可暴露在公网环境,防止带来安 ...

  7. 源码补丁神器—patch-package

    一.背景 vue项目中使用 vue-pdf第三方插件预览pdf,书写业务代码完美运行,pdf文件内容正常预览无问题.后期需求有变,业务需求增加电子签章功能.这个时候pdf文件的内容可以显示出来,但是公 ...

  8. 兄弟组件互相传递值-this.$bus.$emit与this.$bus.$on

    B组件向C组件传递一个值. 一种组件间通信的方式, 适用于任意的组件间通信. 适用于任意的组件间通信. 适用于任意的组件间通信. 通过this.$bus.$emit('事件名',数据)进行提供数据 通 ...

  9. NFS实现部署Linux文件共享

    NFS 即网络文件系统,是一种使用于分布式文件系统的协议,由Sun公司开发,于1984年向外公布,功能是通过网络让不同的机器,不同的操作系统能够彼此分享各自的数据,让应用程序在客户端通过网络访问位于服 ...

  10. 【技能篇】解决vs编译器scanf等函数不安全问题【手把手操作-一分钟解决】

    [技能篇]解决Vs编译器scanf等函数不安全问题 文章目录 说在前面 博主给大家的福利 解决方案 解决过程 尾声 说在前面 大家刚开始学习编程的时候,使用vs编译器.使用scanf等函数的时候遇到的 ...