原题

给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2,2]
示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[4,9]来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

定义两个hashmap
将nums1的数据添加到map1
循环nums2,如果存在于map1,则添加到map2
根据map2的key判断map1和map2中的value数据那个更小就取哪个。

代码

package leetcode.Algorithms;import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;public class Solution_350 {public static void main(String[] args) {int[] nums1 = {180, 395, 311, 750, 949, 164, 212, 968, 978, 404, 381, 1, 265, 92, 331, 350, 375, 451, 903, 932, 129, 590, 771, 883, 900, 344, 712, 804, 367, 547, 596, 533, 22, 691, 125, 558, 450, 74, 771, 673, 778, 45, 44, 172, 63, 260, 669, 374, 526, 337, 138, 459, 724, 458, 428, 851, 536, 387, 93, 586, 453, 715, 29, 330, 60, 648, 541, 923, 244, 377, 164, 780, 748, 831, 708, 544, 176, 985, 1, 308, 256, 922, 645, 121, 42, 855, 667, 730, 115, 677, 289, 355, 478, 298, 849, 218, 730, 449, 621, 957, 244, 25, 22, 866, 287, 704, 841, 757, 916, 439, 124, 316, 575, 642, 4, 84, 345, 157, 4, 578, 359, 223, 936, 275, 997, 197, 478, 795, 369, 963, 733, 252, 18, 872, 690, 851, 985, 49, 124, 646, 153, 396, 150, 499, 96, 699, 848, 541, 214, 201, 544, 249, 974, 599, 937, 583, 711, 298, 375, 137, 829, 913, 625, 897, 757, 795, 266, 298, 6, 404, 809, 6, 879, 20, 943, 293, 717, 146, 634, 835, 805, 532, 75, 256, 115, 994, 147, 368, 784, 716, 579, 127, 341, 195, 233, 75, 194, 858, 741, 507, 932, 648, 610, 239, 604, 626, 67, 203, 793, 769, 429, 760, 466, 540, 258, 977, 614, 781, 276, 832, 771, 538, 296, 990, 832, 146, 895, 42, 458, 681, 582, 444, 301, 72, 786, 977, 483, 266, 868, 693, 703, 593, 536, 581, 594, 448, 793, 606, 71, 556, 230, 652, 711, 704, 8, 871, 700, 681, 431, 921, 655, 745, 344, 285, 842, 856, 401, 541, 364, 117, 933, 175, 250, 410, 608, 805, 446, 358, 233, 921, 430, 743, 126, 662, 22, 793, 371, 452, 55, 432, 521, 811, 548, 556, 160, 974, 567, 816, 802, 357, 379, 527, 237, 435, 669, 381, 583, 124, 188, 510, 6, 144, 493, 316, 135, 444, 251, 653, 656, 952, 49, 451, 558, 181, 838, 227, 605, 41, 677, 738, 858, 603, 888, 463, 406, 765, 754, 10, 956, 898, 815, 123, 727, 961, 816, 801, 243, 102, 606, 538, 581, 49, 424, 388, 746, 483, 682, 573, 666, 391, 764, 490, 879, 353, 861, 768, 24, 306, 499, 143, 363, 775, 453, 221, 85, 450, 874, 842, 836, 554, 518, 799, 116, 27, 455, 826, 995, 436, 429, 851, 613, 147, 42, 363, 946, 505, 510, 705, 192, 729, 809, 715, 390, 267, 364, 808, 733, 878, 919, 20, 877, 997, 917, 590, 196, 80, 868, 173, 325, 249, 346, 961, 734, 235, 27, 374, 914, 363, 905, 796, 399, 153, 51, 267, 522, 440, 630, 344, 719, 216, 787, 442, 589, 897, 419, 950, 777, 916, 534, 584, 277, 910, 372, 107, 732, 409, 73, 496, 927, 92, 317, 500, 609, 584, 806, 934, 382, 864, 656, 606, 165, 762, 407, 461, 957, 851, 795, 458, 470, 340, 83, 381, 323, 980, 457, 204, 313, 793, 949, 388, 985, 432, 172, 292, 184, 778, 924, 613, 756, 692, 874, 706, 527, 232, 397, 907, 28, 97, 899, 573, 282, 349, 104, 809, 318, 286, 258, 504, 908, 604, 765, 676, 148, 476, 283, 427, 975, 967, 178, 401, 593, 578, 711, 981, 599, 846, 362, 682, 612, 683, 902, 886, 648, 533, 811, 527, 961, 331, 602, 679, 726, 13, 321, 969, 78, 968, 760, 824, 266, 717, 303, 233, 630, 306, 81, 902, 896, 827, 453, 137, 184, 675, 835, 259, 335, 945, 204, 569, 237, 396, 646, 629, 411, 975, 291, 158, 87, 240, 382, 681, 756, 773, 440, 235, 687, 137, 748, 478, 670, 808, 132, 834, 24, 345, 240, 505, 732, 294, 794, 267, 433, 273, 100, 888, 634, 754, 947, 691, 469, 156, 873, 661, 583, 380, 789, 192, 37, 621, 798, 347, 401, 953, 395, 888, 386, 876, 692, 530, 784, 27, 211, 772, 612, 162, 209, 392, 21, 352, 959, 95, 784, 482, 588, 924, 738, 862, 463, 571, 731, 47, 698, 751, 569, 532, 870, 118, 677, 202, 208, 201, 573, 672, 358, 112, 501, 424, 802, 851, 202, 543, 620, 967, 159, 977, 614, 903, 797, 765, 99, 667, 999, 528, 220, 365, 263, 610, 513, 652, 781, 249, 453, 256, 371, 751, 492, 646, 544, 673, 130, 199, 987, 279, 866, 739, 599, 50, 197, 479, 114, 153, 121, 512, 828, 246, 701, 23, 103, 231, 426, 109, 547, 530, 14, 694, 37, 281, 339, 351, 396, 773, 406, 965, 773, 748, 118};int[] nums2 = {867, 616, 238, 748, 559, 454, 139, 699, 763, 776, 47, 123, 14, 332, 545, 680, 562, 478, 593, 401, 396, 75, 489, 880, 142, 965, 795, 544, 691, 981, 711, 470, 172, 965, 167, 223, 690, 100, 934, 402, 699, 260, 944, 904, 659, 412, 934, 86, 733, 83, 189, 631, 542, 392, 424, 739, 167, 342, 695, 160, 648, 441, 885, 631, 637, 910, 528, 299, 137, 342, 115, 839, 62, 660, 285, 578, 992, 38, 287, 669, 534, 469, 464, 282, 788, 283, 701, 122, 818, 140, 330, 684, 524, 994, 419, 920, 191, 110, 619, 389, 575, 365, 916, 188, 396, 454, 115, 639, 784, 873, 511, 337, 308, 895, 313, 300, 672, 277, 297, 518, 545, 297, 847, 6, 395, 196, 791, 246, 586, 331, 547, 382, 443, 103, 174, 942, 890, 530, 590, 660, 899, 651, 837, 732, 180, 979, 517, 47, 241, 290, 571, 985, 590, 613, 580, 290, 549, 770, 99, 922, 70, 538, 24, 263, 327, 445, 220, 577, 584, 473, 710, 893, 59, 961, 189, 278, 454, 515, 678, 143, 46, 588, 901, 55, 382, 456, 337, 715, 331, 155, 178, 547, 491, 977, 832, 193, 124, 571, 896, 834, 6, 655, 712, 229, 954, 308, 491, 820, 891, 903, 839, 61, 244, 0, 832, 862, 15, 861, 738, 189, 489, 311, 888, 661, 158, 65, 724, 374, 431, 957, 387, 80, 795, 702, 798, 702, 93, 761, 659, 423, 984, 522, 656, 449, 271, 123, 499, 723, 588, 216, 961, 357, 57, 495, 171, 656, 340, 409, 6, 672, 726, 302, 70, 190, 833, 920, 346, 133, 606, 24, 316, 58, 462, 153, 288, 943, 688, 667, 369, 400, 73, 330, 214, 99, 603, 320, 942, 513, 641, 962, 577, 922, 196, 373, 164, 474, 437, 851, 378, 756, 336, 269, 625, 737, 498, 471, 522, 525, 102, 966, 331, 689, 877, 735, 983, 168, 66, 460, 884, 838, 982, 687, 857, 627, 80, 209, 311, 567, 771, 420, 126, 558, 146, 297, 840, 525, 655, 309, 281, 271, 178, 125, 510, 471, 598, 298, 566, 750, 105, 139, 533, 16, 11, 590, 131, 991, 795, 439, 712, 654, 902, 86, 727, 580, 258, 661, 116, 226, 40, 529, 497, 278, 351, 862, 98, 24, 525, 844, 168, 780, 142, 798, 138, 323, 515, 529, 103, 939, 8, 301, 144, 473, 842, 970, 928, 626, 242, 243, 789, 734, 429, 786, 309, 130, 710, 921, 423, 824, 658, 704, 516, 343, 217, 881, 116, 49, 485, 956, 608, 73, 584, 266, 919, 181, 485, 526, 498, 430, 252, 970, 483, 93, 623, 112, 910, 431, 233, 322, 993, 133, 642, 482, 905, 996, 558, 810, 707, 94, 510, 958, 639, 274, 733, 421, 997, 5, 736, 144, 0, 228, 446, 289, 453, 281, 234, 0, 757, 18, 38, 980, 354, 288, 42, 178, 904, 166, 563, 736, 886, 602, 422, 391, 259, 383, 407, 9, 381, 566, 968, 827, 138, 107, 411, 694, 323, 815, 27, 361, 656, 288, 153, 914, 83, 175, 731, 214, 351, 996, 418, 554, 560, 176, 549, 20, 411, 890, 64, 232, 429, 48, 833, 33, 366, 184, 569, 568, 942, 616, 328, 650, 590, 354, 650, 325, 498, 727, 932, 505, 148, 14, 696, 631, 824, 472, 586, 444, 796, 403, 936, 889, 392, 308, 829, 977, 19, 753, 905, 682, 947, 89, 349, 284, 136, 241, 616, 859, 26, 711, 122, 154, 685, 515, 754, 308, 595, 873, 206, 793, 942, 100, 502, 496, 595, 587, 685, 935, 446, 315, 91, 91, 17, 251, 72, 137, 712, 610, 789, 59, 646, 828, 946, 27, 654, 707, 838, 623, 950, 657, 93, 761, 214, 281, 582, 238, 600, 796, 641, 195, 678, 263, 32, 580, 311, 958, 231, 862, 191, 421, 648, 325, 29, 236, 458, 539, 242, 583, 748, 684, 703, 291, 237, 819, 588, 577, 5, 540, 994, 29, 823, 666, 374, 151, 29, 892, 322, 418, 720, 828, 204, 30, 935, 952, 893, 709, 726, 379, 978, 162, 978, 87, 691, 901, 269, 694, 453, 121, 63, 548, 264, 891, 731, 497, 141, 810, 263, 136, 618, 651, 510, 404, 608, 660, 867, 342, 358, 917, 906, 692, 392, 811, 269, 313, 925, 737, 800, 997, 234, 508, 294, 952, 339, 49, 765, 859, 512, 840, 728, 981, 108, 37, 37, 612, 372, 423, 11, 799, 458, 828, 951, 29, 994, 596, 945, 861, 609, 871, 826, 696, 71, 358, 928, 294, 823, 86, 140, 882, 195, 522, 511, 209, 488, 513, 782, 272, 608, 573, 607, 350, 676, 792, 863, 516, 565, 29, 404, 510, 220, 330, 97, 578, 993, 302, 760, 549, 754, 461, 475, 644, 257, 25, 664, 227, 786, 468, 339, 663, 580, 720, 898, 633, 632, 586, 857, 512, 319, 666};System.out.println(intersect(nums1, nums2));intersect2(nums1, nums2);}public static int[] intersect(int[] nums1, int[] nums2) {if (nums1 == null && nums2 == null) {return null;} else if (nums1 == null) {return nums2;} else if (nums2 == null) {return nums1;}HashMap<Integer, Integer> hashMap = new HashMap<>();for (int i : nums1) {if (hashMap.containsKey(i)) {hashMap.put(i, hashMap.get(i) + 1);} else {hashMap.put(i, 1);}}HashMap<Integer, Integer> hashMap2 = new HashMap<>();for (int i : nums2) {if (hashMap.containsKey(i)) {if (hashMap2.containsKey(i)) {hashMap2.put(i, hashMap2.get(i) + 1);} else {hashMap2.put(i, 1);}}}ArrayList<Integer> list = new ArrayList<>();for (Integer key : hashMap2.keySet()) {//keySet获取map集合key的集int count = Math.min(hashMap.get(key), hashMap2.get(key));for (int i = 0; i < count; i++) {list.add(key);}}int size = list.size();Integer[] array = list.toArray(new Integer[size]);int[] re = new int[array.length];for (int i = 0; i < array.length; i++) {re[i] = array[i];}return re;}public static int[] intersect2(int[] nums1, int[] nums2) {//记录数组1中元素及其出现的次数,然后遍历数组2,发现共同元素,则加入结果集,但是数组1中的次数-1//为了节省空间,将长度小的节点看作是数组1int n1 = nums1.length, n2 = nums2.length;if (n1 > n2) {return intersect2(nums2, nums1);}Map<Integer, Integer> map = new HashMap<>();for (int num : nums1) {map.put(num, map.getOrDefault(num, 0) + 1);}ArrayList<Integer> list = new ArrayList<>();for (int num : nums2) {if (map.containsKey(num)) {//如果数组1中有该元素,那么放入结果集中list.add(num);int count = map.get(num);if (count - 1 == 0) map.remove(num);//将数组1中的计数值-1else map.put(num, count - 1);}}int n = list.size();int[] res = new int[n];for (int i = 0; i < n; i++) {res[i] = list.get(i);}Arrays.sort(res);System.out.println(Arrays.toString(res));return res;}
}

leetcode-Algorithms-350|两个数组的交集II相关推荐

  1. leetcode系列-350.两个数组的交集II

    leetcode系列–第350题.两个数组的交集II 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集. 返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一 ...

  2. 两个对象数组交集_yiduobo的每日leetcode 349.两个数组的交集 amp;amp; 350.两个数组的交集II...

    祖传的手艺不想丢了,所以按顺序写一个leetcode的题解.计划每日两题,争取不卡题吧 349.两个数组的交集https://leetcode-cn.com/problems/intersection ...

  3. LeetCode 350. 两个数组的交集 II

    350. 两个数组的交集 II 难度简单640收藏分享切换为英文接收动态反馈 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集.返回结果中每个元素出现的次数,应与元素在两 ...

  4. Leetcode 350. 两个数组的交集 II 解题思路及C++实现

    解题思路: 和349. 两个数组的交集 这道题目很相似,这道题只是在返回的数组中,多了重复的数字,其实相较于349题,350题更简单. 先对两个数组进行排序,然后遍历这两个数组,找到相同的数字之后,就 ...

  5. LeetCode 350. 两个数组的交集 II ntersection of Two Arrays II

    Table of Contents 一.中文版 二.英文版 三.My answer 四.解题报告 一.中文版 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2 ...

  6. Leetcode-数据结构-350. 两个数组的交集 II

    问题 给两个整数数组 nums1 和 nums2 ,请以 数组形式 返回两数组的 交集 (其在交集中出现的次数:等于该数字在两个数组中出现次数的最小值). 返回结果中 每个元素出现的次数(for遍历) ...

  7. LeetCode 350. 两个数组的交集 II(哈希)

    文章目录 1. 题目 2. 解题 2.1 hash 2.2 数组已排序 1. 题目 给定两个数组,编写一个函数来计算它们的交集. 示例 1:输入: nums1 = [1,2,2,1], nums2 = ...

  8. 12. Leetcode 350. 两个数组的交集 II (数组-分离双指针)

    给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集.返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值).可以不考虑输出 ...

  9. LeetCode——350. 两个数组的交集 II

    题目描述: 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2] 示例 2: 输入:nums1 = [4, ...

  10. 力扣题目——350. 两个数组的交集 II

    注:本文的实现思路主要是基于JS(JavaScript),涉及到的一些函数都是JS中的自带函数 题目描述 给定两个数组,编写一个函数来计算它们的交集. 输入示例 输入:nums1 = [1,2,2,1 ...

最新文章

  1. windows下nginx安装、配置与使用
  2. CSMAR database query sample
  3. Discuz!NT 模板机制分析(转)
  4. 移植 stm32f7_移植zephyrOS到正点原子apollo STM32F767上
  5. 批量导出某个简书用户的所有文章列表和文章超链接
  6. Hystrix简介–总结
  7. SpringBoot2.0基础案例(01):环境搭建和RestFul风格接口
  8. python django_8个Python软件包将简化Django的生活
  9. solr mysql 自动同步_MongoDB和Solr的整合以及实现数据同步功能
  10. 不同芯片的 Mac 电脑,差距会逐渐拉大吗?
  11. CSS 的复合选择器
  12. Python 面向对象 —— 静态方法和类方法
  13. android 通过usb验证应用,Linux应用可通过USB访问Android设备-Chrome OS 75版发布
  14. Ubuntu下Postfix邮件服务器安装及基本的设置
  15. Windows下安装elastic search
  16. 各版本JQuery文件下载
  17. 【工程师学算法】工程常用算法(二)—— 卡尔曼滤波(Kalman Filter)
  18. 第三章 原位正三和弦的连接
  19. 2021-2027全球及中国PCR试管行业研究及十四五规划分析报告
  20. python脱离pc自动化_Android手机脱离电脑直接运行UIAutomator2

热门文章

  1. 写给 羊 哥的一篇博客
  2. 微软力挺程序员硬刚996!
  3. android 安装在笔记本,笔记本电脑怎么装安卓系统_笔记本安装安卓教程-系统城...
  4. CANoe测试:CAPL Test Module的2种创建方式
  5. 大学生论文发表的费用需要多少
  6. Win10系统下怎么将普通账户设置为管理员账户
  7. 第一节课 opencv图像处理,对图片进行叠加处理
  8. SQL分组排序函数(组内分别排序)
  9. 读大前研一《思考的技术》-锻炼解决问题的思维
  10. 基于CIM的新型智慧城市发展政策解析