二分法: 先排序,对两个数组做归并运算,使用set来去重。
public int[] intersection(int[] nums1, int[] nums2)
{
int i = 0, j = 0, k = 0;
// 排序
Arrays.sort(nums1);
Arrays.sort(nums2);
HashSet set = new HashSet<>();
int[] ret = null;
while (i nums2[nums2.length-1])
{
break;
}
if (nums2[j] > nums1[nums1.length-1])
{
break;
}
if (nums1[i] == nums2[j])
{
set.add(nums1[i]);
i++;
j++;
}
else if(nums1[i] < nums2[j])
{
i++;
}
else
{
j++;
}
}
ret = new int[set.size()];
Iterator it = set.iterator();
while (it.hasNext())
{
ret[k] = it.next();
k++;
}
return ret;
}