017_在排序数组中查找元素的第一个和最后一个位置
知识点:二分查找
LeetCode第三十四题:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/
结合两种情况下的二分查找的典型应用场景
语言:GoLang
func searchRange(nums []int, target int) []int {
length := len(nums)
result := []int{-1, -1}
if length == 0 {
return result
}
left, right := 0, length - 1
for left < right {
mid := (left + right) / 2
if target <= nums[mid] {
right = mid
} else {
left = mid + 1
}
}
result[0] = right
left, right = 0, length - 1
for left < right {
mid := (left + right + 1) / 2
if nums[mid] <= target {
left = mid
} else {
right = mid - 1
}
}
result[1] = left
// 即左右边界发生了交叉,或者相等的时候但是相等点的值 != target,即查无
if result[0] > result[1] || (result[0] == result[1] && nums[result[0]] != target) {
return []int{-1, -1}
}
return result
}