golang力扣leetcode 34.在排序数组中查找元素的第一个和最后一个位置

简介: golang力扣leetcode 34.在排序数组中查找元素的第一个和最后一个位置

34.在排序数组中查找元素的第一个和最后一个位置

34.在排序数组中查找元素的第一个和最后一个位置

题解

思路:

1.go自带二分函数sort.SearchInts或者sort.Search
2.函数返回第一个等于target的下标,如果target不存在则返回第一个大于target数的下标
3.由于target可能不在数组中,所有需要对下标进行校验

代码

func searchRange(nums []int, target int) []int {
  s := sort.SearchInts(nums, target)
  e := sort.SearchInts(nums, target+1) - 1
  if s == len(nums) || nums[s] != target {
    return []int{-1, -1}
  }
  return []int{s, e}
}
目录
相关文章
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
153 1
|
7月前
|
机器学习/深度学习 存储 算法
【LeetCode 热题100】347:前 K 个高频元素(详细解析)(Go语言版)
这篇文章详细解析了力扣热题 347——前 K 个高频元素的三种解法:哈希表+小顶堆、哈希表+快速排序和哈希表+桶排序。每种方法都附有清晰的思路讲解和 Go 语言代码实现。小顶堆方法时间复杂度为 O(n log k),适合处理大规模数据;快速排序方法时间复杂度为 O(n log n),适用于数据量较小的场景;桶排序方法在特定条件下能达到线性时间复杂度 O(n)。文章通过对比分析,帮助读者根据实际需求选择最优解法,并提供了完整的代码示例,是一篇非常实用的算法学习资料。
457 90
【LeetCode 27】347.前k个高频元素
【LeetCode 27】347.前k个高频元素
129 0
【LeetCode-每日一题】 删除排序数组中的重复项
【LeetCode-每日一题】 删除排序数组中的重复项
119 4
|
索引
Leetcode第三十三题(搜索旋转排序数组)
这篇文章介绍了解决LeetCode第33题“搜索旋转排序数组”的方法,该问题要求在旋转过的升序数组中找到给定目标值的索引,如果存在则返回索引,否则返回-1,文章提供了一个时间复杂度为O(logn)的二分搜索算法实现。
115 0
Leetcode第三十三题(搜索旋转排序数组)
|
存储 算法
LeetCode第83题删除排序链表中的重复元素
文章介绍了LeetCode第83题"删除排序链表中的重复元素"的解法,使用双指针技术在原链表上原地删除重复元素,提供了一种时间和空间效率都较高的解决方案。
LeetCode第83题删除排序链表中的重复元素
|
Go
Golang语言之数组(array)快速入门篇
这篇文章是关于Go语言中数组的详细教程,包括数组的定义、遍历、注意事项、多维数组的使用以及相关练习题。
360 5
【LeetCode 06】203.移除链表元素
【LeetCode 06】203.移除链表元素
113 0
【LeetCode-每日一题】移除元素
【LeetCode-每日一题】移除元素
94 0
|
算法 索引
LeetCode第34题在排序数组中查找元素的第一个和最后一个位置
这篇文章介绍了LeetCode第34题"在排序数组中查找元素的第一个和最后一个位置"的解题方法,通过使用双指针法从数组两端向中间同时查找目标值,有效地找到了目标值的首次和最后一次出现的索引位置。
LeetCode第34题在排序数组中查找元素的第一个和最后一个位置

热门文章

最新文章

推荐镜像

更多