// 统计一个数字在排序数组中出现的次数。
// 第一次确定左侧边界
// 第二次确定右侧边界
func search(nums []int, target int) int {
length := len(nums)
if length == 0 {
return 0
}
i, j := 0, 0
left, right := 0, length
for left < right {
mid := (left+right)>>1
if nums[mid] == target {
right = mid
}else if nums[mid] < target {
left = mid +1
}else {
right = mid
}
}
if left == length{
return 0
}else if nums[left] == target {
i = left
}else {
return 0
}
left, right = 0, length
for left < right {
mid := (left+right)>>1
if nums[mid] == target {
left = mid + 1
}else if nums[mid] < target {
left = mid + 1
}else {
right = mid
}
}
if left - 1 < 0 {
return 0
}else if nums[left-1] == target {
j = left - 1
}else {
return 0
}
return j-i+1
}