将1添加到数字链接列表

时间:2012-12-10 09:50:40

标签: algorithm data-structures

给定一个链表,使每个节点都是一个数字的数字。

例如:如果number为1234,则相应的链接列表为:

1 -> 2 -> 3 -> 4 -> [\]

问题是在这个数字上加1。所以输出将是:

1 -> 2 -> 3 -> 5 -> [\]

我们可以在O(n)时间内以O(n)空间递归地进行。是否可以将解决方案优化为O(logn)时间复杂度?

更新 n是总位数。

3 个答案:

答案 0 :(得分:2)

不,如果您没有其他数据结构。

由于列表中的最后一个节点将始终更改,并且任何算法到达那里需要O(n)时间(如果没有其他数据结构,则必须追逐整个列表),这将给出O(n)作为你的下限。

答案 1 :(得分:0)

什么是n?如果n是数字中的位数,我认为不可能有O(log(n))解决方案。

如果n是数字本身,那么位数已经是O(log(n))

答案 2 :(得分:0)

您必须遍历每个数字才能执行操作,没有其他方法,但是因为您知道元素的总数,因此您可以编写所有移动操作,如head-> next-> next- > next ...在同一行而不是for循环中。这将加快该过程,因为将避免运行for循环的过载时间复杂性。