(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/74065254冷血之心的博客)
剑指Offer(第二版)面试题53:在排序数组中查找数字出现的次数
题目一:数字在排序数组中出现的次数
统计一个数字在排序数组中出现的次数。例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,所以输出4.
思路一:
最直观的想法,遍历一遍该数组,统计出现的次数,时间复杂度为O(N),可以先和面试官说一下,就说这是最直观的解法(面试官会觉得这小伙子思维比较敏捷,哈哈~)
思路二:
看到排序数组,必须敏锐的想到可以使用二分查找算法。二分算法,我们先比较中间的值和目标target的关系,然后分区间找出该数组中第一次出现目标target和最后一次出现target的位置,两者相减即为该目标出现的次数。整体的时间复杂度为O(logN)
思路一代码: