常见面试问题

2016年9月13日

这是一个恶作剧的问题,对于一个还不知道答案的人来说,这是个顽皮的问题。

没有这样的数据结构。一般来说,不可能有,因为如果有,您可以在O(1(n个),这是不可能的。

尽管这个问题没有通用的解决方案,但在一些限制性的情况下,可以提供这种数据结构。例如,如果问题域只允许小于一百的正整数,则可以使用基于桶排序的数据结构来提供O(1)中的这些操作。但这远非一般的解决方案。

我想这样的问题对于一个有着不知情主题的虐待狂面试官来说可能很有趣,但我不想为他工作。

页:1 2

4对“常见面试问题”的回答

  1. 维维克

    这个问题可以通过使用3个堆栈来解决——最小值、最大值和正常值。每当执行insert(push)时,在将值推入正常堆栈后,还要验证输入值并将其推入最小堆栈或最大堆栈。

  2. 编程实践

    @vivek:这不起作用。无法在恒定时间内从所有三个堆栈中删除任意元素。

  3. 斯科特

    这是一个骗人的问题吗?定时删除意味着定时搜索对吗?如果你想高效地搜索,你必须在某处保持顺序,这意味着你必须做一些工作(大概是在插入时)来保持元素的有序/排序。这些约束似乎是相互排斥的。如果有这样一种数据结构能够满足他们的要求,那么它会不会在数据结构课程中广为人知?尽管如此,我还是希望有人能证明我错了。

留下评论