【发布时间】:2009-07-03 12:32:49
【问题描述】:
我在 LAMP 环境中工作,所以 PHP 是语言;至少我可以用python。
正如标题所说,我有两个无序整数数组。
$array_A = array(13, 4, 59, 38, 9, 69, 72, 93, 1, 3, 5)
$array_B = array(29, 72, 21, 3, 6)
我想知道这些数组共有多少个整数;在示例中,如您所见,结果是 2。我对整数的共同点不感兴趣,例如 (72, 3)。
我需要一种比获取数组 B 的每个元素并检查它是否在数组 A 中更快的方法 ( O(nxm) )
数组可以通过 asort 或 sql 排序(它们来自 sql 结果)进行排序。
我想到的一个想法是为每个数组创建一个“向量”,其中整数是一个位置,其值为 1,不存在的整数为 0。
所以,对于数组 A(从位置 1 开始)
(1, 0, 1, 1, 1, 0, 0, 0, 1, 0, ...)
数组 B 也一样
(0, 0, 1, 0, 0, 1, ...)
然后用一个循环比较这两个向量。问题是这样的向量长度大约是400k。
【问题讨论】:
-
如果两个列表都来自同一个数据库并且字段都被索引,为什么不使用(完全外部)JOIN?