这是上月阿里电面没有回答上的问题,特此纪念一下。
- 使用java自带函数求并集的方式:
import java.util.HashSet;
import java.util.Set;
public class Test {
public static void main(String[] args) {
Set<Integer> result = new HashSet<Integer>();
Set<Integer> set1 = new HashSet<Integer>(){{
add(1);
add(3);
add(5);
}};
Set<Integer> set2 = new HashSet<Integer>(){{
add(1);
add(2);
add(3);
}};
result.clear();
result.addAll(set1);
result.retainAll(set2);
System.out.println("交集:"+result);
result.clear();
result.addAll(set1);
result.removeAll(set2);
System.out.println("差集:"+result);
result.clear();
result.addAll(set1);
result.addAll(set2);
System.out.println("并集:"+result);
}
}
还有一种不用java函数的解决方式:
- 将两个set的元素放到一个数组里面,然后用快速排序将数组排序。
- 遍历有序数组,统计相等的相邻元素对的个数。