# 41. 两个数组的交集

java

```java
public class ArrayUtils {
    public static void printArray(int[] a){
        if(a==null) return;
        for(int i=0;i<a.length;i++){
            System.out.print(a[i]+" ");
        }
        System.out.println();
    }

    public static void printArray(boolean[] a){
        if(a==null) return;
        for(int i=0;i<a.length;i++){
            System.out.print(a[i]?"1 ":"0 ");
        }
        System.out.println();
    }

    public static void printArray(int[] a,int start){
        if(a==null) return;
        for(int i=start;i<a.length;i++){
            System.out.print(a[i]+" ");
        }
        System.out.println();
    }
}


/**
 * 349. 两个数组的交集
 *
 * 给定两个数组，编写一个函数来计算它们的交集。
 *
 * 示例 1:
 *
 * 输入: nums1 = [1,2,2,1], nums2 = [2,2]
 * 输出: [2]
 * 示例 2:
 *
 * 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
 * 输出: [9,4]
 * 说明:
 *
 * 输出结果中的每个元素一定是唯一的。
 * 我们可以不考虑输出结果的顺序。
 */

import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
public class Solution349 {
    /**
     * 利用哈希表或者
     * 先排序后使用双指针，如果指针指向相同，说明出现一个交集元素
     *
     * @param nums1
     * @param nums2
     * @return
     */
    public int[] intersection(int[] nums1, int[] nums2) {
        HashMap<Integer, Integer> map = new HashMap();
        Set<Integer> set = new HashSet<>();//去重
        for (int i = 0; i < nums1.length; i++) {
            if (!map.containsKey(nums1[i])) map.put(nums1[i], 0);
            else map.put(nums1[i], map.get(nums1[i]) + 1);
        }

        for (int i = 0; i < nums2.length; i++) {
            if (map.containsKey(nums2[i])) {
                set.add(nums2[i]);
            }
        }

        int[] r = new int[set.size()];
        int i = 0;
        for (Integer val : set) {
            r[i++] = val;
        }
        return r;
    }

    public static void main(String[] args) {
        int[] nums1 = {
                4, 9, 5
        };
        int[] nums2 = {
                9, 4, 9, 8, 4
        };
        int[] r = new Solution349().intersection(nums1, nums2);
        ArrayUtils.printArray(r);
    }
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://im-qianuxn.gitbook.io/pytorch/ji-suan-ji/shua-ti/shu-ju-jie-gou-lei/41-liang-ge-shu-zu-de-jiao-ji.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
