所以我有一个程序,应该根据输入的信息将保姆与人相匹配。双方的所有信息都保存在链表中。是否可以将保姆链表中的数据与父链表进行匹配?并使其输出类似"__可能与您匹配"的内容
如果您没有太多数据,解决问题的简单但效率低下的方法是:
boolean matches(Person person, BabySitter babySitter) {
// implement a logic that returns whether babySitter and person match
return person.getNumberOfChildren() <= babySitter.getMaximumNumberOfChildren() &&
babySitter.getWorkingDays().containsAll(person.needsBabySitterForDays());
}
for (Person person: people) {
for (BabySitter babySitter: babySitters) {
if (matches(person, babySitter)) {
System.out.println("Babysitter " + babySitter + " is recommended to " + person);
}
}
}
上述算法需要 O(b * p) 时间,其中 b = 保姆人数,p = 人数。所以对于大的b和p,它很慢。
根据matches
的逻辑,您可以通过反向索引实现接近O(b + p)的解决方案。因此,如果您有 10.000 名保姆和 10.000 人,这个优化的解决方案将运行得非常快,而上述算法需要几秒钟。