Skip to content

Latest commit

 

History

History
53 lines (49 loc) · 851 Bytes

面试题53 - I. 在排序数组中查找数字 I.md

File metadata and controls

53 lines (49 loc) · 851 Bytes
// 统计一个数字在排序数组中出现的次数。
// 第一次确定左侧边界
// 第二次确定右侧边界

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
}