码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-07-06 12:18:00      阅读:311      评论:0      收藏:0      [点我收藏+]

标签:algorithm   面试题   python   

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

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:数字在数组中出现的次数

标签:algorithm   面试题   python   

原文地址:http://blog.csdn.net/shiquxinkong/article/details/36731423

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!