您的位置:首页 > Web前端 > JavaScript

[LeetCode][JavaScript]Search for a Range

2015-09-12 19:53 621 查看

Search for a Range

Given a sorted array of integers, 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]
.

For example,
Given
[5, 7, 7, 8, 8, 10]
and target value 8,
return
[3, 4]
.

https://leetcode.com/problems/search-for-a-range/

给定有序的数列,要求找出目标,要求时间复杂度O(logn),二分法。

/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var searchRange = function(nums, target) {
var len = nums.length, start = 0; end = len - 1;
while(start <= end){
var index = parseInt((start + end) / 2);
if(nums[index] === target){
start = end = index;
while(start - 1 >= 0 && nums[start - 1] === target) start--;
while(end + 1 <= len - 1 && nums[end + 1] === target) end++;
return [start, end];
}else if(nums[index] > target){
end = index - 1;
}else if(nums[index] <target){
start = index + 1;
}
}
return [-1, -1];
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: