Leetcode 350. Intersection of Two Arrays II JAVA语言

简介:
1
2
3
4
5
6
Given two arrays, write a function to compute their intersection.
Example:
Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2, 2].
Note:
Each element in the result should appear as many times as it shows in both arrays.
The result can be in any order.

题意:求两个数组的交集,每个元素可以出现多次,返回的数组顺序随意。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public  class  Solution {
     public  int [] intersect( int [] nums1,  int [] nums2) {
         List<Integer> list= new  ArrayList<Integer>();
         int  length1=nums1.length;
         int  length2=nums2.length;
         int [] ret= new  int [Math.min(length1,length2)];
         int  index= 0 ;
         HashMap<Integer,Integer> map= new  HashMap<Integer,Integer>();
         for ( int  i= 0 ;i<length1;i++){
             if (!map.containsKey(nums1[i])){
                 map.put(nums1[i], 1 );
             } else {
                 map.put(nums1[i],map.get(nums1[i])+ 1 );
             }
         }
         for ( int  i= 0 ;i<length2;i++){
             if (map.containsKey(nums2[i]) && map.get(nums2[i])!= 0 ){
                 map.put(nums2[i],map.get(nums2[i])- 1 );
                 ret[index++]=nums2[i];
             }
         }
         return  Arrays.copyOfRange(ret, 0 ,index);
         
     }
}

PS:

1、先申请一个长度是较小长度的数组的数组。

2、用hashmap存放第一个数组的各个数字出现的次数。

3、遍历第二个数组,去hashmap中找,如出现,则hashmap对应的次数减1,同时将key加入到数组中。

4、最后取部分返回。。。


本文转自 努力的C 51CTO博客,原文链接:http://blog.51cto.com/fulin0532/1891688


相关文章
|
11天前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
28 6
|
11天前
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
30 2
|
11天前
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
26 1
|
11天前
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
22 1
|
22天前
|
算法 Java
Java语言实现最短路径算法(Shortest Path)
Java语言实现最短路径算法(Shortest Path)
34 3
|
11天前
|
存储 算法 Java
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
31 0
|
11天前
|
算法 Java
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
18 0
|
11天前
|
存储 算法 Java
LeetCode初级算法题:两数之和+斐波拉契数列多种java解法
LeetCode初级算法题:两数之和+斐波拉契数列多种java解法
10 0
|
11天前
|
算法 Java 索引
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
22 0
|
11天前
|
存储 算法 Java
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
10 0