我在完成以前的面试问题时遇到了这个问题。任何方向来接近这个?
在32位数字的未排序数组中查找第一个唯一编号 不使用哈希表或计数器数组。
答案 0 :(得分:1)
看到输入数组未排序,您可以通过排序来解决问题。这有点傻 - 为什么要回答问题本身的问题? - 但排序的技术性有点有趣,所以也许这个答案毕竟不是微不足道的。
在排序后查看数组时,您会发现几个与其前任和后继不相等的数字;从这些中,您想要选择原始数组中的第一个。
为了有效地做到这一点,在正在排序的临时数组中,对于每个数字,还存储原始数组中该数字的索引。因此,最后,选择与其前任和后继不相等的数字,以及原始数组中索引最低的数字。
答案 1 :(得分:0)
当你必须“不使用Y做X”时,你有时可以使用与Y具有相同效果的Z,并且认为你没有使用Y.或者你可以很好地伪装Y以便没有人会认出来一见钟情。
考虑到这一点,考虑为trie中的所有数字存储重复计数器。要从所有唯一数字的集合中选择第一个数字,还要将指数与重复计数器一起存储。
我可以声称trie不是重复计数器的数组,因为您不必为该数组分配和初始化2 32 内存单元。这更像是一个美化的哈希表,但看起来不同。