看一百遍美女,美女也不一定是你的。但你刷一百遍算法,知识就是你的了~~
谁能九层台,不用累土起!
题目
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target,返回 [-1, -1]。
进阶:
- 你可以设计并实现时间复杂度为
O(log n)的算法解决此问题吗?
示例 1:
输入: nums = [5,7,7,8,8,10], target = 8
输出: [3,4]
示例 2:
输入: nums = [5,7,7,8,8,10], target = 6
输出: [-1,-1]
示例 3:
输入: nums = [], target = 0
输出: [-1,-1]
提示:
0 <= nums.length <= 105-109 <= nums[i] <= 109nums是一个非递减数组-109 <= target <= 109
解题思路
- 我们遍历数组
- 在第一次遇到
target值时记录下起始位置 - 每次遇到
target值更新结束位置 - 遍历结束后返回结果
解题代码
var searchRange = function(nums, target) {
let [left,right] = [-1,-1]
for(let i =0 ;i<nums.length;i++){
if(nums[i]==target){
right = i
if(left<0){
left = i
}
}
}
return [left,right]
};
如有任何问题或建议,欢迎留言讨论!