1. 输入: nums1 = [1,2,2,1], nums2 = [2,2]
    2. 输出: [2,2]
    输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
    
    输出: [4,9]
    

    思路:如果两者都是无序的可以采用哈希表。即统计两个数组较短的数组的每个字符重复的个数,然后遍历长数组,如果哈希表中存在则,将个数减1,然后将这个元素存到新的数组中,哈希表<元素,个数>;可以采用Arrays中的排序方法sort()将两个无序数组进行排序,然后采用双指针;

    class Solution {
        //无序采用哈希表
        // public int[] intersect(int[] nums1, int[] nums2) {
        //     if(nums1.length>nums2.length){
        //         return intersect(nums2,nums1);
        //     }
        //     Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        //    // Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        //     for(int num1:nums1){
        //         if(map.containsKey(num1)){
        //             map.put(num1,map.get(num1)+1);
        //         }else{
        //             map.put(num1,1);
        //         }
        //     }
        //     int result[] = new int [nums1.length];
        //     int index =0;
        //     for(int num2:nums2){
        //         if(map.containsKey(num2)){
        //             if(map.get(num2)>0){
        //            result[index++] = num2;
        //            map.put(num2,map.get(num2)-1);
        //             }else{
        //                 map.remove(num2);
        //             }
        //         }
        //     }
        //     return Arrays.copyOf(result,index);
        // }
        //有序
        public int[] intersect(int[] nums1, int[] nums2) {
            Arrays.sort(nums1);
            Arrays.sort(nums2);
            int result[] = new int[Math.min(nums1.length,nums2.length)];
            int index =0;
            int index1=0;
            int index2=0;
            while(index1<nums1.length &&index2<nums2.length){
                if(nums1[index1]<nums2[index2]){
                    index1++;
                }else if(nums1[index1]>nums2[index2]){
                    index2++;
                }else{
                    result[index++] = nums1[index1];
                    index1++;
                    index2++;
                }
            }
            return Arrays.copyOfRange(result,0,index);
        }
    
    }