如有侵权,请联系删除,本人只想记录题目,若有冒犯,请谅解!
问题描述:
统计一个数字在排序数组中出现的次数。
输入: nums = [5,7,7,8,8,10], target = 8
输出: 2
输入: nums = [5,7,7,8,8,10], target = 6
输出: 0
method 1:二分查找法(K神):通过改进二分查找法:
1、如果存在目标数字,返回最后一个目标数字的索引值加一
2、如果不存在目标数字,返回最靠近且大于目标数字的索引
class Solution(object):
def search(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
def binary_search(lis, target):
left = 0
right = len(lis) - 1
while left<=right:
mid = (left + right) // 2
if nums[mid] <= target:
left = mid + 1
else:
right = mid - 1
return left
return binary_search(nums, target) - binary_search(nums, target - 1)