二分查找——数字在排序数组中出现的次数
2016-06-14 14:31
417 查看
两次二分查找找到该数字的左右边界。
public class Solution { public int GetNumberOfK(int [] array , int k) { if(array == null||array.length == 0) return 0; //找左边界 int left=0; int right=array.length-1; while(left<right-1) { int mid=left+(right-left)/2; if(array[mid]>=k) right=mid; else left=mid; } int start=right; if(array[left] == k) start=left; if(array[right]!=k) return 0; //找右边界; left=0; right=array.length-1; while(left<right-1) { int mid=left+(right-left)/2; if(array[mid]<=k) left=mid; else right=mid; } int end=left; if(array[right] == k) end=right; return end-start+1; } }
相关文章推荐
- 判断图是否有环
- cocos接入广点通sdk注意事项
- Counting Bits
- 上传下载
- 如何准备一个全新的app开发
- laravel创建或扩展用户自定义函数
- 使用Python+Selenium过程中中常见的问题汇总
- nginx二级域名配置自动跳转到一级域名
- Spring对Hibernate事务管理
- 剑指offer-002
- 数据库分区分片框架
- SpringMVC入门(二)--使用@RequestMapping映射请求
- 7虚拟机类加载机制
- 开发第一个应用之前你需要知道的六件事
- 安装低版本gcc
- JavaScript 自定义函数库
- 最新获取操作系统信息函数
- 使用Instruments中的Leaks检测内存泄露
- Walker 之注册界面的实现
- IOS Dev Intro - Coordination System