【发布时间】:2011-05-02 12:32:37
【问题描述】:
我想不出这个面试问题。
你有一个整数数组。您需要提供另一个具有这些功能的数据结构:
int get(int index)
void set (int index, int value)
void setall(int value)
他们都会做你猜他们应该做的事。 限制是每个函数都在 O(1) 中。
你如何设计它以使 setAll 为 O(1)。
我考虑为每个整数添加另一个字段,该字段将指向一个整数,每次调用 setAll 时都会更改该整数。当有人调用 setAll 然后 set 然后 get 时问题就来了。
编辑:我更改了变量的名称,这样会更清楚。另外,既然你问了,get 假设返回 array[i],set(index, value) 假设将 value value 放入 array[index]。
在setall(index, value) 之后,您应该为数组中的每个 i,j 使用 get (get(i) == get(j) == value)。
【问题讨论】:
-
set和setall中的i是什么? -
我假设 n = 数组的长度,其中效率为 O(n)?
-
如果有人调用setAll,然后set,然后get,为什么会有问题? (按这个顺序,表面上)另外,感觉这是一个家庭作业问题,而不是属于
interview questions部分的问题。 -
这是面试题吗?你申请的是什么职位?它似乎比其他面试问题更难更高级。我应该知道并发性、时间戳等吗?因为我一个都不认识!
标签: algorithm complexity-theory