剑指offer——数字在排序数组中出现的次数
来源:互联网 发布:数据分析功能 编辑:程序博客网 时间:2024/06/15 23:21
二分查找第一个大于等于这个数的位置,然后再二分查找第一个大于这个数的位置,然后用后者减去前者。
public class Solution { public int GetNumberOfK(int [] array , int k) { if(array == null || array.length == 0) return 0; int first_bound = Find1(array, k); int second_bound = Find2(array, k); return second_bound - first_bound; } public int Find1(int[] array, int k) { int low = 0; int high = array.length - 1; while (low <= high) { int mid = low + (high - low) / 2; if(array[mid] >= k) { high = mid-1; if(high < 0 || ! (array[high] >= k)) { return mid; } } else if(array[mid] < k) { low = mid + 1; } } return low; } public int Find2(int[] array, int k) { int low = 0; int high = array.length - 1; while (low <= high) { int mid = low + (high-low) / 2; if(array[mid] > k) { high = mid - 1; if(high < 0 || !(array[high] > k)) { return mid; } } else if(array[mid] <= k) { low = mid + 1; } } return low; } public static void main(String[] args) { Solution solution = new Solution(); int array[] = new int[] { 1, 2, 2, 2, 2, 2, 3, 4 }; System.out.println(solution.GetNumberOfK(array, 5)); }}
阅读全文
1 0
- 【剑指offer】数字在排序数组中出现的次数
- 剑指offer--数字在排序数组中出现的次数
- 《剑指offer》数字在排序数组中出现的次数
- 剑指offer:数字在排序数组中出现的次数
- 剑指offer-数字在排序数组中出现的次数
- 剑指offer:数字在排序数组中出现的次数
- [剑指offer]数字在排序数组中出现的次数
- 剑指offer 数字在排序数组中出现的次数
- [剑指offer]数字在排序数组中出现的次数
- 剑指offer|数字在排序数组中出现的次数
- 剑指offer-数字在排序数组中出现的次数
- 《剑指offer》-数字在排序数组中出现的次数
- 剑指offer - 数字在排序数组中出现的次数
- 剑指offer-数字在排序数组中出现的次数
- 【剑指offer】数字在排序数组中出现的次数
- 剑指offer:数字在排序数组中出现的次数
- 《剑指offer》数字在排序数组中出现的次数
- 剑指offer-数字在排序数组中出现的次数
- Linux 下Eclipse安装及使用
- 正则表达式
- 在 Angularjs 中 ui-sref 和 $state.go 如何传递参数
- SpringCloudConfig配置服务器搭建与使用
- tomcat中的startup.bat闪退
- 剑指offer——数字在排序数组中出现的次数
- Grails3下使用logback实现数据库日志功能
- poj 1201 差分约束系统大水题
- linux下github的使用
- MacBook快捷键
- elasticsearch5.4.0 java开发注意事项
- 如何选择高精准IP地址定位数据提升业务水平
- mysql (二)
- JSP_strut2架构下后台Java方法产生之数据传递到前台为javascript使用的一种方法