349. 两个数组的交集 350. 两个数组的交集 II
链接
349. 两个数组的交集
解法一

class Solution {
public int[] intersection(int[] nums1, int[] nums2)
{
if (nums1 == null || nums2 == null)
{
return null;
}
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();
for (int j : nums1)
{
set1.add(j);
}
for (int i : nums2)
{
if (set1.contains(i))
{
set2.add(i);
}
}
List<Integer> list = new ArrayList<>(set2);
int[] ret = new int[list.size()];
for (int i = 0; i < ret.length; i++)
{
ret[i] = list.get(i);
}
return ret;
}
}
解法二

class Solution {
public int[] intersection(int[] nums1, int[] nums2)
{
if (nums1 == null || nums2 == null)
{
return null;
}
Set<Integer> set = new TreeSet<>();
for (int k : nums1)
{
for (int i : nums2)
{
if (k == i)
{
set.add(k);
}
}
}
int[] ret = new int[set.size()];
List<Integer> list = new ArrayList<>(set);
for (int i = 0; i < ret.length; i++)
{
ret[i] = list.get(i);
}
return ret;
}
}
350. 两个数组的交集 II
解法

class Solution {
public int[] intersect(int[] nums1, int[] nums2)
{
if (nums1 == null || nums2 == null)
{
return null;
}
List<Integer> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
for (int i : nums1)
{
list1.add(i);
}
for (int i : nums2)
{
if (list1.contains(i))
{
list2.add(i);
list1.remove(Integer.valueOf(i));
}
}
int[] ret = new int[list2.size()];
int i = 0;
for (int num : list2)
{
ret[i++] = num;
}
return ret;
}
}