作者:wenxuanlee | 来源:互联网 | 2022-12-09 16:00
假设我有三个n长度的数组:
first = [19, 29, 60];
secOnd= [20, 12, 30];
third = [26, 60, 90];
如果不迭代三个嵌套循环,找到可能组合总数的最佳方法是什么,我可以从第一个数组中选择一个整数,然后从第二个数组中选择一个更大的整数,然后从第三个数组中选择一个更大的整数.基本上,一个组合是:
first[i]
上例中的组合总数为7.获得此数字的最有效方法是什么?
1> MBo..:
对所有数组进行排序 (数组长度为N的复杂度O(NlogN))
对于B[i]
第二个数组中的每个项目,获取第一个数组中较小项目的L
数量和第三个数组中较大项目的数量R
添加L*R
到结果中
(线性复杂性,因为L
只能随着增加而i
增加而且R
只能减少)
第二阶段的伪代码:
ia = 0
ic = 0
for ib in range(N):
while (A[ia]
整体复杂性是 O(NlogN)