mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-12 13:45:39 +08:00
新增34.朴实无华的二分查找 JavaScript版本
This commit is contained in:
@ -396,6 +396,46 @@ class Solution:
|
|||||||
## JavaScript
|
## JavaScript
|
||||||
|
|
||||||
```js
|
```js
|
||||||
|
var searchRange = function(nums, target) {
|
||||||
|
const getLeftBorder = (nums, target) => {
|
||||||
|
let left = 0, right = nums.length - 1;
|
||||||
|
let leftBorder = -2;// 记录一下leftBorder没有被赋值的情况
|
||||||
|
while(left <= right){
|
||||||
|
let middle = left + ((right - left) >> 1);
|
||||||
|
if(nums[middle] >= target){ // 寻找左边界,nums[middle] == target的时候更新right
|
||||||
|
right = middle - 1;
|
||||||
|
leftBorder = right;
|
||||||
|
} else {
|
||||||
|
left = middle + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return leftBorder;
|
||||||
|
}
|
||||||
|
|
||||||
|
const getRightBorder = (nums, target) => {
|
||||||
|
let left = 0, right = nums.length - 1;
|
||||||
|
let rightBorder = -2; // 记录一下rightBorder没有被赋值的情况
|
||||||
|
while (left <= right) {
|
||||||
|
let middle = left + ((right - left) >> 1);
|
||||||
|
if (nums[middle] > target) {
|
||||||
|
right = middle - 1;
|
||||||
|
} else { // 寻找右边界,nums[middle] == target的时候更新left
|
||||||
|
left = middle + 1;
|
||||||
|
rightBorder = left;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return rightBorder;
|
||||||
|
}
|
||||||
|
|
||||||
|
let leftBorder = getLeftBorder(nums, target);
|
||||||
|
let rightBorder = getRightBorder(nums, target);
|
||||||
|
// 情况一
|
||||||
|
if(leftBorder === -2 || rightBorder === -2) return [-1,-1];
|
||||||
|
// 情况三
|
||||||
|
if (rightBorder - leftBorder > 1) return [leftBorder + 1, rightBorder - 1];
|
||||||
|
// 情况二
|
||||||
|
return [-1, -1];
|
||||||
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
|
Reference in New Issue
Block a user