first_and_last_in_sorted_array
2022-12-14
浏览 (745)
first_and_last_in_sorted_array.go 源码
package leetcode
/ 在排序数组中查找元素的第一个和最后一个位置
/ 直接遍历查找
func searchRange1(nums []int, target int) []int {
j := -1
for i, v := range nums {
if v == target {
j = i
break
}
}
k := j
for i := j + 1; i < len(nums) && nums[i] == target; i++ {
k = i
}
return []int{j, k}
}
/ 遍历查找,另一种写法
func searchRange3(nums []int, target int) []int {
res := []int{-1, -1}
for i, v := range nums {
if v == target {
if i == 0 || nums[i-1] != target {
res[0] = i
}
if i == len(nums)-1 || nums[i+1] != target {
res[1] = i
}
}
}
return res
}
/ 二分查找
func searchRange2(nums []int, target int) []int {
lo, hi := 0, len(nums)-1
for lo <= hi {
mid := lo + (hi-lo)/2
if nums[mid] > target {
hi = mid - 1
} else if nums[mid] < target {
lo = mid + 1
} else {
if nums[lo] == target && nums[hi] == target {
return []int{lo, hi}
}
if nums[lo] != target {
lo++
}
if nums[hi] != target {
hi--
}
}
}
return []int{-1, -1}
}
你可能感兴趣的文章
first_bad_version
min_in_rotated_sorted_array
minimum_genetic_mutation
- 所属分类: 后端技术
- 本文标签:
技术
- 版权声明: 本文链接 https://seaxiang.com/blog/60bebe06535a4ac8a19ca1619f85fc3b