我正在考虑从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个元素,则需要花费很长时间。
我想知道是否有什么特别的方法。
答案 0 :(得分:1)
问题的时空复杂度为O(n 2 ),这意味着任何解决方案都将很慢,但是您可能会发现实际上并不需要创建 所有对,而返回给定索引的对。
也许是这样的:
private int[] numbers; // initialised elsewhere
int[] pair(int n) {
return new int[]{numbers[n / numbers.length, numbers[n % numbers.length]};
}