题目
统计一个数字在排序数组中出现的次数。例如输入排序数组 {1,2,3,3,3,3,4,5}和数字3,由于3在这个数组出现了4次,因此输出4。
分析
对排序的数组使用二分查找,主要为了确定目标数字k的第一个位置和最后一个位置。
在一次查找过程中,存在3种情况:
- 如果中间数字比k小,则在数组的后半段进行查找;
- 如果中间数字比k大,则在数组的前半段进行查找;
- 如果中间数字和k相等,则需要判断这个数字是不是第一个k或者是不是最后一个k。
时间复杂度是$O(\log{n})$。
实现
|
|
统计一个数字在排序数组中出现的次数。例如输入排序数组 {1,2,3,3,3,3,4,5}和数字3,由于3在这个数组出现了4次,因此输出4。
对排序的数组使用二分查找,主要为了确定目标数字k的第一个位置和最后一个位置。
在一次查找过程中,存在3种情况:
时间复杂度是$O(\log{n})$。
|
|