码迷,mamicode.com
首页 > 其他好文 > 详细

Intersection of Two Arrays | & ||

时间:2016-06-30 14:05:59      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

Intersection of Two Arrays

Given two arrays, write a function to compute their intersection.

Example

Given nums1 = [1, 2, 2, 1]nums2 = [2, 2], return [2].

分析:

这种考察一个数是否存在另一个集合中,一般来讲,都会用到HashSet. 如果不允许用额外的存储空间,可以对nums1排序,然后使用二分查找。

技术分享
 1 public class Solution {
 2     /**
 3      * @param nums1 an integer array
 4      * @param nums2 an integer array
 5      * @return an integer array
 6      */
 7     public int[] intersection(int[] nums1, int[] nums2) {
 8         if (nums1 == null || nums2 == null || nums1.length == 0 || nums2.length == 0) {
 9             int[] arr = new int[0];
10             return arr;
11         }
12         
13         Set<Integer> set = new HashSet<Integer>();
14         for (int i : nums1) {
15             set.add(i);
16         }
17         
18         ArrayList<Integer>  list = new ArrayList<Integer>();
19         
20         for (int i : nums2) {
21             if (set.contains(i)) {
22                 list.add(i);
23                 set.remove(i);
24             }
25         }
26         
27         return convertIntegers(list);
28     }
29     
30     public int[] convertIntegers(List<Integer> integers) {
31         int[] ret = new int[integers.size()];
32         Iterator<Integer> iterator = integers.iterator();
33         for (int i = 0; i < ret.length; i++)
34         {
35             ret[i] = iterator.next().intValue();
36         }
37         return ret;
38     }
39 }
View Code

Intersection of Two Arrays II

Given two arrays, write a function to compute their intersection.

Example

Given nums1 = [1, 2, 2, 1]nums2 = [2, 2], return [2, 2].

这一次需要把所有的都找出来,可以用HashMap<Integer, Integer> 来存储,第一个Integer指的是数,第二个指的是那个数存在的个数。

技术分享
 1 public class Solution {
 2     /**
 3      * @param nums1 an integer array
 4      * @param nums2 an integer array
 5      * @return an integer array
 6      */
 7     public int[] intersection(int[] nums1, int[] nums2) {
 8         if (nums1 == null || nums2 == null || nums1.length == 0 || nums2.length == 0) {
 9             int[] arr = new int[0];
10             return arr;
11         }
12         
13         Map<Integer, Integer> map = new HashMap<Integer, Integer>();
14         for (int i : nums1) {
15             if (map.containsKey(i)) {
16                 map.put(i, map.get(i) + 1);
17             } else {
18                 map.put(i, 1);
19             }
20         }
21         
22         ArrayList<Integer>  list = new ArrayList<Integer>();
23         
24         for (int i : nums2) {
25             if (map.containsKey(i) && map.get(i) >= 1) {
26                 list.add(i);
27                 map.put(i, map.get(i) - 1);
28             }
29         }
30         return convertIntegers(list);
31     }
32     
33     public int[] convertIntegers(List<Integer> integers) {
34         int[] ret = new int[integers.size()];
35         Iterator<Integer> iterator = integers.iterator();
36         for (int i = 0; i < ret.length; i++) {
37             ret[i] = iterator.next().intValue();
38         }
39         return ret;
40     }
41 }
View Code

转载请注明出处:cnblogs.com/beiyeqingteng/

 

Intersection of Two Arrays | & ||

标签:

原文地址:http://www.cnblogs.com/beiyeqingteng/p/5629618.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!