我最近轰炸了一次编码采访,因为我无法足够快地生成列表的所有可能子列表。更具体地说:(使用python)
["1", "3", "2", ...]
[1, 1, 1]
,前两个1和最后两个1的子列表是不同的子列表。使用itertools.combinations
能够足够快地生成我的所有子列表,但是随后遍历所有这些子列表来确定哪些被16划分为“可除数”太慢了。
有没有一种方法可以以与itertools.combations
相同或更快的速度创建子列表,并在创建每个子列表时检查每个子列表是否可以被16整除?
任何见识将不胜感激!
答案 0 :(得分:0)
对列表进行排序。 找到最小的列表(按长度计),其总和至少为16,并且可以将其整除(例如s)。 然后检查所有尺寸列表(从s到6)。 子列表的长度越大,子列表的数量越少,那应该成倍地减少大小的数量