热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

给定三个相等长度的数组,我如何找到可能的组合数,其中我以逐渐增加的方式从每个数组中选择一个整数

如何解决《给定三个相等长度的数组,我如何找到可能的组合数,其中我以逐渐增加的方式从每个数组中选择一个整数》经验,为你挑选了1个好方法。

假设我有三个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)


推荐阅读
author-avatar
wenxuanlee
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有