快速判断两个有限集合是否存在交集
- 先将一个集合存入Map数据结构中
- 然后依次从Map中去取另一个集合中的元素
- 如果取得到,说明存在交集
- 利用了数组的随机存取特性,匹配速度很快,时间复杂度是两个集合的大小之和。
/**
* 快速判断两个集合是否存在交集
* 时间复杂度:2n
*/
@Test
public void testJiaoji() {
String[] aa = new String[]{"datou", "xiaoming", "xiaohua", "xiaohong"};
String[] bb = new String[]{"dawei", "daming", "dahua", "dahong", "datou"};
Map<String, String> map = new HashMap<>();
for(String item : aa) {
map.put(item, "1");
}
boolean flag = false;
for(String item : bb) {
if (map.get(item) != null) {
flag = true;
break;
}
}
if(flag) {
System.out.println("存在交集");
} else {
System.out.println("不存在交集");
}
}
打印结果
存在交集