题目:
找出有序数组中指定元素出现的次数,要求时间复杂度为O(lgn)
ex,
数组{0,0,0,2,3,3,3,3,3,4,5,5},0出现3次,3出现5次
思路:
很容易想到的一个办法是binary_search找到指定元素,然后左右查询,得到出现的次数k,但其时间复杂度为O(lgn)+k。
可通过改进binary_search,做两次查找,一次得到指定元素的起始出现位置,一次得到终止出现位置。
代码实现如下:
题目:
找出有序数组中指定元素出现的次数,要求时间复杂度为O(lgn)
ex,
数组{0,0,0,2,3,3,3,3,3,4,5,5},0出现3次,3出现5次
思路:
很容易想到的一个办法是binary_search找到指定元素,然后左右查询,得到出现的次数k,但其时间复杂度为O(lgn)+k。
可通过改进binary_search,做两次查找,一次得到指定元素的起始出现位置,一次得到终止出现位置。
代码实现如下: