Open Linjiayu6 opened 4 years ago
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
nums = [5,7,7,8,8,10], target = 7
var searchRange = function(nums, target) {
// 找个基准第一个值
var start_i = nums.indexOf(target)
if (start_i === -1) return [-1, -1]
var nums = nums.slice(start_i + 1)
var end_i = start_i
while (nums && nums.length > 1) {
var _m = Math.floor(nums.length / 2)
var left = nums.slice(0, _m), right = nums.slice(_m)
if (left[left.length - 1] === target) {
// [8, 8] [9]
if (right[0] !== target) return [start_i, end_i + left.length]
// [8, 8] [8, 9]
end_i += left.length
nums = right
} else {
nums = left
}
}
return [start_i, end_i]
};
console.log(searchRange(nums, target))
1 - 剑指 Offer 53 - I. 在排序数组中查找数字 I
同类型34. 在排序数组中查找元素的第一个和最后一个位置