我有一个'traits',L列表和一个我要匹配的列表数据库。我想查找包含L中所有特征的列表。如果尚未收集5,我将从L中删除一个特征,然后再次在数据库中搜索包含所有特征的列表。顺序无关紧要,我只在乎查找特征的确切列表。
目前,我有一个递归解决方案,其中我在每个位置上切出一个元素并再次匹配。它可以完成工作,但我想找到一种更有效的方法来匹配这些列表。
def match([1,2,3,4,5]) {
findAllByTraits([1,2,3,4,5]) //[1,2,3,4,5,7,10] will match
//[2,3,4,5] will not match this iteration
//if 5 lists not found
match([1,2,3,4]) //without 5
match([1,2,3,5]) //without 4
match([1,2,4,5]) //without 3
match([1,3,4,5]) //without 2
match([2,3,4,5]) //without 1
}
我立即看到的问题是,它将导致许多情况被多次递归调用。另外,对于此示例,它将继续进行match([1,2,3,4]),然后再处理其他匹配情况。这可能会导致较小的列表在较大的列表之前被“匹配”。目标是拥有5个最大的列表。