剑指offer第三十七题。
题目描述
统计一个数字在排序数组中出现的次数。
解题思路
看到排序数组,第一个想到的是二分查找,我们来看看这里是如何应用二分查找法的。
我的答案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| public class Solution { public int GetNumberOfK(int [] array , int k) { int low = 0; int high = array.length-1; int count = 0; while(low <= high){ int mid = low + (high - low) / 2; if(array[mid] > k){ high = mid - 1; }else if(array[mid] < k){ low = mid + 1; }else{ count++; int index = mid-1; while(index >= 0 && array[index--] == k){ count++; } index = mid + 1; while(index < array.length && array[index++] == k){ count++; } break; } } return count; } }
|