-1

我有一些带有整数元素的数组。例如 (20, 5, 7, 143, 25, 244, 148)。并且有一个条件:元素之间的差异是 5。这就是为什么在这个数组中数量将为 2,因为我只有两对 20,25 和 143、148,因为 25-20 = 5 和 143-148 = 5也。当然,我可以使用 foreach 并在其中再次使用 foreach 并比较所有元素的差异;并计算它。但它有困难(N * N)。我需要找到另一个解决方案。

编辑。解决了。 首先:从初始数组中的所有元素中减去 $difference Int,并将结果值设置在新数组中,然后使用 in_array() 并计算数量。

4

1 回答 1

1

您可以在这里做的一个技巧是从初始数组中的所有元素中减去 5(元素之间的差异),因此您将拥有新数组,例如

int[] initialArray = {20, 5, 7, 143, 25, 244, 148};
int[] newArray = {15, 0, 2, 138, 20, 239, 143};

明白了吗?:) 如果没有,那么剩下要做的就是遍历新数组并检查初始数组中是否存在这样的元素这是 O(n) 复杂性操作,因为您遍历数组一次并检查初始数组是否包含给定元素是 O(1)。如果您在 php 中编码,则使用 in_array() 函数,如果您使用 java,则使用具有 contains 方法的 Map 而不是数组。

于 2013-11-12T19:19:23.037 回答