# LeetCode – Intersection of Two Arrays II (Java)

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

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

Java Solution 1

```public int[] intersect(int[] nums1, int[] nums2) { HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); for(int i: nums1){ if(map.containsKey(i)){ map.put(i, map.get(i)+1); }else{ map.put(i, 1); } }   ArrayList<Integer> list = new ArrayList<Integer>(); for(int i: nums2){ if(map.containsKey(i)){ if(map.get(i)>1){ map.put(i, map.get(i)-1); }else{ map.remove(i); } list.add(i); } }   int[] result = new int[list.size()]; int i =0; while(i<list.size()){ result[i]=list.get(i); i++; }   return result; }```

Java Solution 2

If the arrays are sorted, then we can use two points.

```public int[] intersect(int[] nums1, int[] nums2) { Arrays.sort(nums1); Arrays.sort(nums2); ArrayList<Integer> list = new ArrayList<Integer>(); int p1=0, p2=0; while(p1<nums1.length && p2<nums2.length){ if(nums1[p1]<nums2[p2]){ p1++; }else if(nums1[p1]>nums2[p2]){ p2++; }else{ list.add(nums1[p1]); p1++; p2++;   } }   int[] result = new int[list.size()]; int i=0; while(i<list.size()){ result[i]=list.get(i); i++; } return result; }```
Category >> Algorithms
If you want someone to read your code, please put the code inside <pre><code> and </code></pre> tags. For example:
```<pre><code>
String foo = "bar";
</code></pre>
```

public static int[] intersect2(int[] nums1, int[] nums2) {

ArrayList list = new ArrayList();
for (int i : nums1) {
if(Arrays.binarySearch(nums2, i)!=-1){