-3
A
回答
4
你已经做出不正确的假设键值获得Collections.binarysearch()最高和最低指数的位置是:返回的值将以最低的指数。从documentation:
如果列表包含多个元素等于指定的对象,则不能保证会找到哪个元素。
基本上,一旦你发现一个比赛,你只需要走的列表,直到找到不匹配,以获得最低的指数,然后步行列表,直到找到一个非匹配得到最高的索引。
int found = Collections.binarySearch(myList, "String");
int lowIndex = found;
while (lowIndex > 0 && myList.get(lowIndex - 1).equals("String")) {
lowIndex--;
}
int highIndex = found;
while (highIndex + 1 < myList.size()
&& myList.get(highIndex + 1).equals("String")) {
highIndex++;
}
(你可以重写这些while
循环为for
循环用空的身体,如果你想,但我觉得这更易读。)
相关问题
- 1. 二进制搜索
- 2. 二进制搜索
- 3. 二进制搜索
- 4. 二进制搜索
- 5. 二进制搜索树内的二进制搜索树
- 6. 二进制搜索是/是二进制搜索贪婪算法?
- 7. 线性搜索或二进制搜索或二叉搜索树
- 8. 二进制搜索树,搜索方法
- 9. 二进制搜索树搜索操作
- 10. 二进制搜索树 - 搜索范围
- 11. Swift二进制搜索树搜索
- 12. C#在2个索引上进行二进制搜索
- 13. 二进制搜索范围
- 14. Haskell - 二进制搜索树
- 15. 二进制搜索树Instantiaition
- 16. 二进制搜索功能
- 17. 二进制搜索程序
- 18. 二进制搜索树C++
- 19. RandomAccessFile的二进制搜索
- 20. 递归二进制搜索
- 21. 与二进制搜索
- 22. 通用二进制搜索++
- 23. 二进制搜索问题?
- 24. 二进制递归搜索
- 25. 二进制搜索树toString
- 26. 搜索二进制表
- 27. 二进制搜索CompareTo Java
- 28. C#二进制搜索
- 29. 二进制搜索用C
- 30. 使用二进制搜索
你这是什么意思lowIndex?它返回列表中项目的索引(如果它存在)。 – Reddy
你是否在第一次和最后一次出现“String”的索引之后(假设有多个出现),或者你是否像'highIndex = lowIndex +“String”.length()'之类的东西? – Edd