面试题38:数字在排序数组中出现的次数
来源:互联网 发布:在数据库中 概念模型 编辑:程序博客网 时间:2024/06/06 19:47
public class Solution { public int GetNumberOfK(int [] array , int k) { int length = array.length; if(length == 0){ return 0; } int firstK = getFirstK(array, k, 0, length-1); int lastK = getLastK(array, k, 0, length-1); if(firstK != -1 && lastK != -1){ return lastK - firstK + 1; } return 0; } //递归写法 private int getFirstK(int [] array , int k, int start, int end){ if(start > end){ return -1; } int mid = (start + end) >> 1; if(array[mid] > k){ return getFirstK(array, k, start, mid-1); }else if (array[mid] < k){ return getFirstK(array, k, mid+1, end); }else if(mid-1 >=0 && array[mid-1] == k){ return getFirstK(array, k, start, mid-1); }else{ return mid; } } //循环写法 private int getLastK(int [] array , int k, int start, int end){ int length = array.length; int mid = (start + end) >> 1; while(start <= end){ if(array[mid] > k){ end = mid-1; }else if(array[mid] < k){ start = mid+1; }else if(mid+1 < length && array[mid+1] == k){ start = mid+1; }else{ return mid; } mid = (start + end) >> 1; } return -1; }}
阅读全文
0 0
- 【面试题】数字在排序数组中出现的次数
- 面试题38:数字在排序数组中出现的次数
- [剑指offer][面试题38]数字在排序数组中出现的次数
- 面试题38:数字在排序数组中出现的次数
- 剑指Offer:面试题38 数字在排序数组中出现的次数
- 面试题38:数字在排序数组中出现的次数
- 剑指offer面试题38:数字在排序数组中出现的次数
- 面试题38:数字在排序数组中出现的次数
- 剑指offer 面试题38—数字在排序数组中出现的次数
- 《剑指Offer》学习笔记--面试题38:数字在排序数组中出现的次数
- 【剑指Offer学习】【面试题38:数字在排序数组中出现的次数】
- 面试题38_数字在排序数组中出现的次数
- 剑指Offer面试题38(Java版):数字在排序数组中出现的次数
- 剑指offer-面试题38:数字在排序数组中出现的次数
- 剑指offer之面试题38数字在排序数组中出现的次数
- 剑指offer面试题38:数字在已排序数组中出现的次数
- 剑指offer面试题38:数字在排序数组中出现的次数
- 剑指Offer----面试题38:数字在排序数组中出现的次数
- java项目中获取路径以及读写文件
- JSTL的c:forEach标签(${status.index})
- 七牛上传图片 使用线程
- 屏幕相关工具类
- 操作系统基础之存储器管理
- 面试题38:数字在排序数组中出现的次数
- FaceGen中RDL工具使用(2)-模型集合目录
- miniui的mini-autocomplete实现点击立即弹出框
- CSS 字体(例如font-awesome),使用子域名之后不能正确显示
- FastDFS之本地迁移数据
- httpclient 请求springmvc遇到的问题-日志级别更改
- 火狐浏览器中函数获取event的对象
- 流程图绘制心得
- 时间相关工具类