【发布时间】:2013-01-15 18:35:52
【问题描述】:
假设有一个数字列表——存储在数组、队列、链表或任何支持列表数据结构的东西中(即数字序列很重要)。现在,假设我们想在将一个数字添加到现有列表后添加一个新对象(list.add())。但是, list.add() 接受原始列表并返回一个新列表,其中包含原始列表中的数字和新数字。函数 add() 不会以任何方式更改原始列表对象。
所以,要实现这个一种方法是,我们在函数中复制原始列表,将新数字添加到其中,然后将其返回。这需要 O(n) 时间。
那么有没有其他方法可以让我们在比 O(n) 更短的时间内完成这项工作。
编辑 1: 该元素将在最后添加。 add() 返回的对象应该包含原始列表中的所有数字和新的数字。原始列表保持不变。
编辑 2: 我认为,如果我们每次向列表中添加数字时不复制整个列表,这可能是可能的。这方面有没有可能?
【问题讨论】:
-
你在哪里添加新节点?到头部,尾部,中间?
-
@Oli Charlesworth...到最后
标签: data-structures complexity-theory time-complexity