-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path034.js
More file actions
43 lines (36 loc) · 912 Bytes
/
034.js
File metadata and controls
43 lines (36 loc) · 912 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var searchRange = function(nums, target) {
var start = 0;
var end = nums.length - 1;
if (target < nums[start] || target > nums[end]) return [-1, -1];
var targetIndex = -1;
do {
if (nums[start] === target) {
targetIndex = start;
break;
}
if (nums[end] === target) {
targetIndex = end;
break;
}
var mid = Number.parseInt((start + end) / 2);
if (nums[mid] === target) {
targetIndex = mid;
break;
} else if (nums[mid] < target) {
start = mid;
} else {
end = mid;
}
}while(start < end - 1);
if (targetIndex < 0) return [-1, -1];
start = targetIndex;
end = targetIndex;
while(start > 0 && nums[start - 1] === target) { --start; }
while(end < nums.length - 1 && nums[end + 1] === target) { ++end; }
return [start, end];
};