标签:
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 }
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 }
转载请注明出处:cnblogs.com/beiyeqingteng/
Intersection of Two Arrays | & ||
标签:
原文地址:http://www.cnblogs.com/beiyeqingteng/p/5629618.html