38 lines
819 B
JavaScript
38 lines
819 B
JavaScript
|
/*
|
||
|
* @lc app=leetcode id=34 lang=javascript
|
||
|
*
|
||
|
* [34] Find First and Last Position of Element in Sorted Array
|
||
|
*/
|
||
|
/**
|
||
|
* @param {number[]} nums
|
||
|
* @param {number} target
|
||
|
* @return {number[]}
|
||
|
*/
|
||
|
var searchRange = function(nums, target) {
|
||
|
// 题目要求时间复杂度为O(logn)因此很自然想到二分法
|
||
|
let start = 0;
|
||
|
let end = nums.length - 1;
|
||
|
while (start <= end) {
|
||
|
const mid = start + ((end - start) >> 1);
|
||
|
|
||
|
if (nums[mid] === target) {
|
||
|
let left = 0;
|
||
|
let right = 0;
|
||
|
|
||
|
while (nums[mid - left] === target) {
|
||
|
left++;
|
||
|
}
|
||
|
while (nums[mid + right] === target) {
|
||
|
right++;
|
||
|
}
|
||
|
return [mid - left + 1, mid + right - 1];
|
||
|
} else if (nums[mid] > target) {
|
||
|
end = mid - 1;
|
||
|
} else {
|
||
|
start = mid + 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return [-1, -1];
|
||
|
};
|