剑指Offer—37—数字在排序数组中出现的次数
来源:互联网 发布:刻录机软件 编辑:程序博客网 时间:2024/06/16 05:54
数字在排序数组中出现的次数:统计一个数字在排序数组中出现的次数。
package A37数字在排序数组中出现的次数;public class Solution { public int GetNumberOfK(int [] array , int k) { // 遍历一遍 O(N) // 二分查找 O(logN) 找到最开始的index 和 最后的index if (array == null) { return 0; } int num = 0; int first = getFirstIndex(array, 0, array.length-1, k); int last = getLastIndex(array, 0, array.length-1, k); if (first >-1 && last >-1) { num = last-first+1; } return num; } public int getFirstIndex(int[] array,int start,int end,int k){ if (end > start){ return -1; } int mid = (start+end) >> 1; int midData = array[mid]; if (midData == k){ if (mid == start || array[mid-1] != k){ return mid; // 满足这个条件一定是开头第一个 }else { end = mid - 1; // 否则前面还有等于K的,继续寻找 } }else { if (array[mid] > k){ end = mid-1; }else { start = mid +1; } } return getFirstIndex(array,start,end,k); } public int getLastIndex(int[] array,int start,int end,int k){ if (end > start){ return -1; } int mid = (start+end) >> 1; int midData = array[mid]; if (midData == k){ if (mid == end || array[mid+1] != k){ return mid; }else { start = mid+1; } }else { if (array[mid]>k){ end = mid-1; }else { start = mid+1; } } return getLastIndex(array,start,end,k); }}
阅读全文
0 0
- 剑指Offer——(37)数字在排序数组中出现的次数
- 剑指Offer—37—数字在排序数组中出现的次数
- 【剑指offer】数字在排序数组中出现的次数
- 剑指offer--数字在排序数组中出现的次数
- 《剑指offer》数字在排序数组中出现的次数
- 剑指offer:数字在排序数组中出现的次数
- 剑指offer-数字在排序数组中出现的次数
- 剑指offer:数字在排序数组中出现的次数
- [剑指offer]数字在排序数组中出现的次数
- 剑指offer 数字在排序数组中出现的次数
- [剑指offer]数字在排序数组中出现的次数
- 剑指offer|数字在排序数组中出现的次数
- 剑指offer-数字在排序数组中出现的次数
- 《剑指offer》-数字在排序数组中出现的次数
- 剑指offer - 数字在排序数组中出现的次数
- 剑指offer-数字在排序数组中出现的次数
- 【剑指offer】数字在排序数组中出现的次数
- 剑指offer:数字在排序数组中出现的次数
- 删除公共字符
- (九)Spring Boot将程序打成可执行jar包,并将配置文件从jar包中分离出来
- yii2上传整理
- Luogu 2024(带权并查集)
- 在线pdf转word文件网站
- 剑指Offer—37—数字在排序数组中出现的次数
- Collections.sort的两种用法
- Android之SharedPreferences存储
- io流读写文件(文件内容修改)
- Java中常见状态码的含义
- Java随想
- composer命令整理
- 1025. 反转链表 (25)
- Xshell如何设置字体