Array - 34. Find First and Last Position of Element in Sorted Array
时间:2022-07-25
本文章向大家介绍Array - 34. Find First and Last Position of Element in Sorted Array,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
34.Find First and Last Position of Element in Sorted Array
Given an array of integers nums
sorted in ascending order, find the starting and ending position of a given target
value.
Your algorithm's runtime complexity must be in the order of O(log n).
If the target is not found in the array, return [-1, -1]
.
Example 1:
Input: nums = [5,7,7,8,8,10], target = 8
Output: [3,4]
Example 2:
Input: nums = [5,7,7,8,8,10], target = 6
Output: [-1,-1]
思路:
在一个有序数组中找到目标的首尾下标,要求时间复杂度为O(logn),很明显使用二分法来做,与普通二分法不同的是,需要当mid元素目标匹配的时候,判断该移动右指针走,找到左边界,还是移动左指针,找到右边界。所以需要两次二分搜索。
代码:
go:
func searchRange(nums []int, target int) []int {
var res = []int{-1, -1}
if nums == nil || len(nums) == 0 {
return res
}
// find left
low, high := 0, len(nums) - 1
for ; low + 1 < high; {
mid := low + (high - low)/2
if nums[mid] < target {
low = mid
} else {
high = mid
}
}
if nums[low] == target {
res[0] = low
} else if nums[high] == target {
res[0] = high
}
if res[0] == -1 {
return res
}
// find right
low, high = 0, len(nums) - 1
for ; low + 1 < high; {
mid := low + (high - low)/2
if nums[mid] <= target {
low = mid
} else {
high = mid
}
}
if nums[high] == target {
res[1] = high
} else if nums[low] == target {
res[1] = low
}
return res
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android倒计时神器(CountDownTimer)
- Kotlin如何安全访问lateinit变量的实现
- Android实现加载对话框
- Android RecyclerView实现悬浮吸顶、分隔线、到底提示效果
- Android监听键盘状态获取键盘高度的实现方法
- android实现小音频频繁播放
- 每日一个知识点:什么时候会触发Full GC
- 拥抱kotlin之如何习惯使用kotlin高阶函数
- Android中调用另一个Activity并返回结果(选择头像功能为例)
- Android 自定义缩短Toast显示时间的实例代码
- Android Presentation实现双屏异显
- Android中点击按钮启动另一个Activity及Activity之间传值问题
- Android中使用SeekBar拖动条实现改变图片透明度(代码实现)
- Android实现原生锁屏页面音乐控制
- android实现简单音乐播放器