在Oracle访谈中提出的一个问题是“在没有访问完整数组的情况下,在n个元素范围1到n的排序数组中找到缺少的元素”。我想知道是否有办法找到缺少元素而不访问所有元素?只有一个元素缺失,没有重复。如果有这个问题的解决方案,Plz会帮助我。
答案 0 :(得分:2)
您可以进行轻微自定义的二进制搜索。您可以访问n / 2st元素并查看该值。如果它小于n / 2,则缺少的元素位于数组的下半部分。其他在上层。然后你在下半部分做同样的事。并继续,直到你只有一种可能性。适用于在O(log(n))中随机访问的排序数组。