是否可以复制数组并在O(log n)(Java)中展开它

时间:2016-11-02 02:13:57

标签: java arrays algorithm arraylist

我被告知使用整数数组并在其中插入元素,这相对简单。困难的部分是必须扩展阵列并保留其现有元素,在O(log n)内完成所有这些。此数组稍后将被排序并转换为堆,但可以忽略它,因为它与问题无关。

我遇到的问题是,我必须实现的方法之一是insert,它必须在O(log n)中完成。我的阵列没有容量。插入元素很容易,但我需要以某种方式适应数组达到其容量,并且仍然能够将整数插入到数组中而不抛出NPE。 insert方法必须适应这一点而不违反O(log n)。

我考虑过使用ArrayList,其中ArrayList.add是O(1),只要满足给定/默认长度,否则为了重新分配新的ArrayList是O(n)将空间加倍,并将旧元素复制到其中。

是否有一个实现可以扩展数组的长度并保留/复制其内容,同时满足O(log n)?

0 个答案:

没有答案