编程实现:
请你使用二分查找法在一个升序的列表中统计k的数量。
输入:
第一行: n个升序的整数,允许重复,以英文逗号分隔。
第二行:要查找的整数k。
输出:
一行,若查到了,输出k的数量,若没查到,输出0。
样例1输入:
1,22,66,80,91,123
122
样例2输出:0
#!/usr/bin/python
# -*- coding: UTF-8 -*-
l = [11,22,33,34,34,34,34,34,34,34,34,55,55,55,66,77,88]
target = 34
low = 0
high = len(l)-1
mid = (low + high) //2
while low <= high:
if l[mid] == target:
print(mid)
break
elif l[mid] < target:
low = mid +1
else:
high = mid -1
mid = (low + high) //2
right_index = mid + 1
left_index = mid -1
count = 1
while True:
if right_index <= len(l)-1 and target == l[right_index]:
right_index = right_index + 1
count = count + 1
else:
break
while True:
if left_index >= 0 and target == l[left_index]:
left_index = left_index -1
count = count + 1
else:
break
print(count)