【发布时间】:2020-11-13 06:14:40
【问题描述】:
仅使用二分搜索,如何获得具有重复项的请求元素,因为重复项将一个接一个,搜索条件应该是什么?
假设这是给定的数组,由用户输入,我们必须搜索“efg”是否存在,我们不知道索引,也不知道它重复了多少次,但如果存在,打印其重复次数。
array[][10]={"abc","efg","efg","jkl","jkl","jhk"}
【问题讨论】:
-
如果你有二分搜索的位置,查看它之前和之后的索引,看看它们是否也相等。
-
如果重复项彼此相邻,您可以遍历数组并打印它们。
-
@ChrisMM 是的,但是就像我们需要搜索元素本身一样,但我们也不知道它重复了多少次。
-
先看看……这相等吗?不——继续。是的 - 在那个之前看看。重复。
-
有一个标准算法:
std::equal_range
标签: c++ c algorithm search binary-search