剑指Offer--数组在排序数组中出现的次数--二分查找的应用
来源:互联网 发布:mac谷歌浏览器安插件 编辑:程序博客网 时间:2024/05/17 21:41
统计一个数字在排序数组中出现的次数。
package 剑指offerfrom27题;import java.util.HashMap;public class 数组在排序数组中出现的次数 {public static void main(String[] args) {// TODO Auto-generated method stub//int arrar[] = { 1, 2, 3, 3, 3, 3, 4, 5 };int arrar[] = { 1, 2, 3, 4, 5 };//int arrar[] = {3,3,3,3,4,5};System.out.println(GetNumberOfK2(arrar, 5));}public int GetNumberOfK(int[] array, int k) {if (array.length == 0 || array == null) {return 0;}HashMap<Integer, Integer> hashMap = new HashMap<>();for (int i = 0; i < array.length; i++) {if (hashMap.containsKey(array[i])) {int value = hashMap.get(array[i]);hashMap.put(array[i], value + 1);} else {hashMap.put(array[i], 1);}}int number = 0;if (hashMap.containsKey(k)) {number = hashMap.get(k);}return number;}public static int GetNumberOfK2(int[] array, int k) {if (array.length == 0 || array == null) {return 0;}int low = 0;int high = array.length - 1;int mid = (low + high) / 2;int start = 0;int end = 0;/*二分查找找到k的位置*/while (array[mid] != k) {if (low==high) {//找不到k的时候break;}if (array[mid] > k) {high = mid - 1;}if (array[mid] < k) {low = mid + 1;}mid = (high + low) / 2;}if (array[mid]==k) {start = mid;end = mid + 1;while (start >= 0 &&array[start] == k ) {start--;}while (end < array.length && array[end] == k) {end++;}return end - start -1;}return 0;}}
阅读全文
0 0
- 剑指Offer--数组在排序数组中出现的次数--二分查找的应用
- 【二分查找】在排序数组中,找出给定数字的出现次数 以及二分其他应用
- 剑指offer——数字在排序数组中出现的次数(复习二分)
- 码农小汪剑指Offer之35-数字在排序数组中出现的次数 暴力 二分查找的运用
- 【剑指offer】数字在排序数组中出现的次数
- 剑指offer--数字在排序数组中出现的次数
- 《剑指offer》数字在排序数组中出现的次数
- 剑指offer:数字在排序数组中出现的次数
- 剑指offer-数字在排序数组中出现的次数
- 剑指offer:数字在排序数组中出现的次数
- [剑指offer]数字在排序数组中出现的次数
- 剑指offer 数字在排序数组中出现的次数
- [剑指offer]数字在排序数组中出现的次数
- 剑指offer|数字在排序数组中出现的次数
- 剑指offer-数字在排序数组中出现的次数
- 《剑指offer》-数字在排序数组中出现的次数
- 剑指offer - 数字在排序数组中出现的次数
- 剑指offer-数字在排序数组中出现的次数
- JavaScript 中匹配单个字符实例
- 将年月日时分秒都保存进数据库
- 实验数据的频谱分析
- EMQ插件开发mysql实现认证和访问控制
- Lineage OS刷机出现error 7的解决办法
- 剑指Offer--数组在排序数组中出现的次数--二分查找的应用
- Lexicography CSU
- 剑指offe面试题8 旋转数组的最小数字 (java实现)
- Camshift原理 camshift利用目标的颜色直方图模型将图像转换为颜色概率分布图,初始化一个搜索窗的大小和位置,并根据上一帧得到的结果自适应调整搜索窗口的位置和大小,从而定位出当前图像中目标的
- 算法:C++实现BCD进制转换
- 数据结构-冒泡排序(Bubble Sort)
- 【jzoj5248】【NOIP2017提高A组模拟8.10】【花花的聚会】【动态规划】【可持久化线段树】
- 欢迎使用CSDN-markdown编辑器
- [HDU 1078 ] FatMouse and Cheese [ dp 记忆化搜索 ]