我正在为以下问题寻找伪代码或 java 或 js 的解决方案:
我们需要实现一个有效的位结构来保存 N 位的数据(您也可以将这些位视为布尔值,开/关)。
我们需要支持以下方法: init(n) get(index) set(index, True/False) setAll(True/false)
现在我得到了一个包含 o(1) 的解决方案,除了 init 是 o(n)。这个想法是创建一个数组,其中每个索引都保存一点值。为了支持 setAll,我还将使用位 vapue 保存时间戳,以了解是从 tge 数组中获取值还是从 tge 最后一个 setAll 值中获取值。init 中的 o(n) 是因为我们需要遍历数组来将它清零,否则它会产生垃圾,可以是任何东西。现在我被要求找到一个 init 也是 o(1) 的解决方案(我们可以创建一个数组,但我们不能清除垃圾,垃圾甚至可能看起来像有效的数据,这是错误的并使解决方案变得糟糕,我们需要100% 有效的解决方案)。
更新:这是一个算法问题,而不是特定于语言的问题。我在面试问题中遇到过。由于内存限制,使用整数来表示位数组也不够好。我被告知它与对数组中的垃圾数据进行某种智能处理有关,而无需在 init 中对其进行处理,使用某种机制不落下,因为如果数组中的垃圾数据(但我不是确定如何)。
慕田峪4524236
一只萌萌小番薯
相关分类