剑指Offer 38 数字在排序数组中出现的次数
来源:互联网 发布:淘宝男鞋高仿店推荐 编辑:程序博客网 时间:2024/04/29 17:23
题目描述
统计一个数字在排序数组中出现的次数
思路
- 暴力法其实也很简单 O(n)的复杂度,但是谁让我们厉害呢
- 优化其实也就是两个二分,一个找开始,一个找结束,注意边界值的就好了
代码
static public int GetNumberOfK(int [] array , int k) { if (array==null||array.length==0) return 0; int first =GetFirst(array,k,0,array.length-1); int last = GetLast(array,k,0,array.length-1); return (first>-1&&first>-1)?last-first+1:0; } static public int GetFirst(int []arr,int k ,int start , int end) { if (start>end) return -1; int mid = (start+end)>>1; if (arr[mid]==k) { if ((mid==0)||(mid>0&&arr[mid-1]!=k)) { return mid; } else end = mid-1; } else if (arr[mid]<k) { start=mid+1; } else if (arr[mid]>k) end = mid-1; return GetFirst(arr,k,start,end); } static public int GetLast(int []arr,int k ,int start , int end) { if (start>end) return -1; int mid = (start +end)>>1; if (arr[mid]==k) { if (mid==arr.length-1||(mid<arr.length-1&&arr[mid+1]!=k)) return mid; else start= mid+1; } else if (arr[mid]>k) end=mid-1; else if (arr[mid]<k) start = mid+1; return GetLast(arr, k, start, end); }
收获
- 其实没什么收获的啦,心静心静;
0 0
- 【剑指offer】数字在排序数组中出现的次数
- 剑指offer--数字在排序数组中出现的次数
- 《剑指offer》数字在排序数组中出现的次数
- 剑指offer:数字在排序数组中出现的次数
- 剑指offer-数字在排序数组中出现的次数
- 剑指offer:数字在排序数组中出现的次数
- [剑指offer]数字在排序数组中出现的次数
- 剑指offer 数字在排序数组中出现的次数
- [剑指offer]数字在排序数组中出现的次数
- 剑指offer|数字在排序数组中出现的次数
- 剑指offer-数字在排序数组中出现的次数
- 《剑指offer》-数字在排序数组中出现的次数
- 剑指offer - 数字在排序数组中出现的次数
- 剑指offer-数字在排序数组中出现的次数
- 【剑指offer】数字在排序数组中出现的次数
- 剑指offer:数字在排序数组中出现的次数
- 《剑指offer》数字在排序数组中出现的次数
- 剑指offer-数字在排序数组中出现的次数
- Reactive Native环境搭建(Android)
- bzoj1149: [CTSC2007]风玲Mobiles
- 我看见一个妹子很不想说他的
- VTK编译的一些报错
- 循环节长度
- 剑指Offer 38 数字在排序数组中出现的次数
- LeetCode: 46. Permutations
- 停止worker脚本
- POJ 3669-Meteor Shower [bfs] 《挑战程序设计竞赛》2.1
- java OOP 继承
- Help him
- php hello world!
- Java的日期与时间(目录)
- 算法与数据结构-常用排序算法总结1-比较排序