1,先对数组进行排序 先对两个数组进行排序,然后使用两个指针,分别指向两个数组开始的位置。

如果两个指针指向的值相同,说明这个值是他们的交集,就把这个值加入到集合list中,然后两个指针在分别往后移一步。 如果两个指针指向的值不同,那么指向的值相对小的往后移一步,相对大的先不动,然后再比较

		public int[] intersect (int[] nums1, int[] nums2){
        int len1 = nums1.length;
        int len2 = nums2.length;
        int len = len1 < len2 ? len1 : len2;
        int ans[] = new int[len];
        if (len1 == 0 || len2 == 0) return ans;
				//排序
        Arrays.sort(nums1);
        Arrays.sort(nums2);
        int i = 0, j = 0, k = 0;
        while (i < len1 && j < len2){
						//假如相等 都往后移动
						//不相等   谁小 谁就往后移动
            if (nums1[i] == nums2[j]){
                ans[k] = nums1[i];
                i++;
                j++;
                k++;
            }
            else if(nums1[i] < nums2[j]){
                i++;
            }else {
                j++;
            }
        }
        return Arrays.copyOfRange(ans,0,k);
    }