首页 > 其他 > 详细

【剑指offer】Q38:数字在数组中出现的次数

时间:2014-08-02 10:01:53      阅读:274      评论:0      收藏:0      [点我收藏+]

与折半查找是同一个模式,不同的是,在这里不在查找某个确定的值,而是查找确定值所在的上下边界。

def getBounder(data, k, start, end, low_bound = False):
	if end < start : return -1

	while start <= end:
		mid = ( start + end ) >> 1
		if data[ mid ] > k:
			end = mid - 1
		elif data[ mid ] < k:
			start = mid + 1
		else:
			if low_bound == True:
				if mid == 0 or data[ mid - 1 ] != k:
					return mid
				else:
					end = mid - 1
			else:
				if mid == end or data[ mid + 1 ] != k:
					return mid
				else:
					start = mid + 1

def getNumberOfk(data, k):
	if len(data) <= 1: return len(data)
	low_bound = getBounder( data, k, 0, len( data ) - 1, low_bound = True )
	up_bound = getBounder( data, k, 0, len( data ) - 1, low_bound = False)
	return up_bound - low_bound + 1
	


【剑指offer】Q38:数字在数组中出现的次数,布布扣,bubuko.com

【剑指offer】Q38:数字在数组中出现的次数

原文:http://www.cnblogs.com/mengfanrong/p/3886501.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!