匹配 2 个不同链表中的数据



所以我有一个程序,应该根据输入的信息将保姆与人相匹配。双方的所有信息都保存在链表中。是否可以将保姆链表中的数据与父链表进行匹配?并使其输出类似"__可能与您匹配"的内容

如果您没有太多数据,解决问题的简单但效率低下的方法是:

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 人,这个优化的解决方案将运行得非常快,而上述算法需要几秒钟。

相关内容

  • 没有找到相关文章

最新更新