首页 > 解决方案 > 有没有其他方法可以从数组中提取元素对?

问题描述

我正在考虑从 ArrayList 中提取元素对

例如,ArrayList 的值为 [1, 2, 3, 4, 5, 6, 7, 8, 9 。. . 100],我应该做成对的。

简单的方法是按顺序制作 (1, 2) (1, 3) (1, 4) ..(1, 100) (2, 3) (2, 4) (2, 5) 。. ..(99, 100)

但是,如果数组中有 50000 个元素,则需要很长时间。

我想知道有没有什么特别的方法。

标签: java

解决方案


您的问题的空间和时间复杂度为 O(n 2 ),这意味着任何解决方案都会很慢,但是您可能会发现您不需要实际创建所有对,而是返回给定索引的对。

也许是这样的:

private int[] numbers;  // initialised elsewhere
int[] pair(int n) {
    return new int[]{numbers[n / numbers.length, numbers[n % numbers.length]};
}

推荐阅读