我是新来的。作为一名研究生,我已经思考了一段时间的算法。我非常感谢任何能够帮助解决以下问题的帮助。我已经进行了足够的搜索,但没有找到与该问题相近的解决方案。
我们有一个无限长的排序不同数字数组。前n个数字是大于0但小于1的分数。所有其余元素都是“1”,您不知道n的值。您需要开发一种算法来检查用户给定的分数F是否出现在该数组中。分析您的算法作为n的函数的时间复杂度。(例如,对于n = 8的示例,其中“1”开始在数组的第8个位置)
我的方法: 我猜想解决此问题的最佳方法是使用二分查找。每次我们都可以将数组大小缩小一半,最终到达要找的分数。假设数组中有m个元素,包括“1”。分数元素的数量为n。 在整个数组上执行二分搜索的时间复杂度为O(log(m))。由于被要求以n的形式表达时间复杂度,因此m=n+k(假设数组中的“1”的数量为k)。 因此,这个问题的时间复杂度为O(log(n+k))。
请分享您的想法。谢谢
我们有一个无限长的排序不同数字数组。前n个数字是大于0但小于1的分数。所有其余元素都是“1”,您不知道n的值。您需要开发一种算法来检查用户给定的分数F是否出现在该数组中。分析您的算法作为n的函数的时间复杂度。(例如,对于n = 8的示例,其中“1”开始在数组的第8个位置)
我的方法: 我猜想解决此问题的最佳方法是使用二分查找。每次我们都可以将数组大小缩小一半,最终到达要找的分数。假设数组中有m个元素,包括“1”。分数元素的数量为n。 在整个数组上执行二分搜索的时间复杂度为O(log(m))。由于被要求以n的形式表达时间复杂度,因此m=n+k(假设数组中的“1”的数量为k)。 因此,这个问题的时间复杂度为O(log(n+k))。
请分享您的想法。谢谢