Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit01ccda9

Browse files
committed
add: Search for a Range
1 parent4ad4079 commit01ccda9

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed

‎README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Progress: 20/
1313
|19|[Remove Nth Node From End of List](https://leetcode.com/problems/remove-nth-node-from-end-of-list/)|[JavaScript](./src/remove-nth-node-from-end-of-list/res.js)|Medium|
1414
|22|[Generate Parentheses](https://leetcode.com/problems/generate-parentheses/)|[JavaScript](./src/generate-parentheses/res.js)|Medium|
1515
|26|[Remove Duplicates from Sorted Array](https://leetcode.com/problems/remove-duplicates-from-sorted-array/)|[JavaScript](./src/remove-duplicates-from-sorted-array/res.js)|Easy|
16+
|34|[Search for a Range](https://leetcode.com/problems/search-for-a-range/)|[JavaScript](./src/search-for-a-range/res.js)|Medium|
1617
|48|[Rotate Image](https://leetcode.com/problems/rotate-image/)|[JavaScript](./src/rotate-image/res.js)|Medium|
1718
|66|[Plus One](https://leetcode.com/problems/plus-one/)|[JavaScript](./src/plus-one/res.js)|Easy|
1819
|69|[Sqrt(x)](https://leetcode.com/problems/sqrtx/)|[JavaScript](./src/sqrtx/res.js)|Easy|

‎src/search-for-a-range/res.js

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
// Given an array of integers sorted in ascending order, find the starting and ending position of a given target value.
2+
3+
// Your algorithm's runtime complexity must be in the order of O(log n).
4+
5+
// If the target is not found in the array, return [-1, -1].
6+
7+
// For example,
8+
// Given [5, 7, 7, 8, 8, 10] and target value 8,
9+
// return [3, 4].
10+
11+
/**
12+
* res.js
13+
*@authors Joe Jiang (hijiangtao@gmail.com)
14+
*@date 2017-02-26 22:56:22
15+
*@version $Id$
16+
*
17+
*@param {number[]} nums
18+
*@param {number} target
19+
*@return {number[]}
20+
*/
21+
letsearchRange=function(nums,target){
22+
letarrlen=nums.length;
23+
if(!arrlen){
24+
return[-1,-1];
25+
}
26+
27+
letleftIndex=binarySearch(nums,0,arrlen-1,target,'l'),rightIndex;
28+
if(leftIndex===-1){
29+
return[-1,-1];
30+
}else{
31+
rightIndex=binarySearch(nums,leftIndex,arrlen-1,target,'r');
32+
}
33+
34+
return[leftIndex,rightIndex];
35+
};
36+
37+
letbinarySearch=function(nums,begin,end,target,type){
38+
letarrlen=nums.length;
39+
while(begin<=end){
40+
letmid=begin+Number.parseInt((end-begin)/2),
41+
midVal=nums[mid];
42+
43+
if(midVal===target){
44+
switch(type){
45+
case'l':
46+
if(mid===0||nums[mid-1]!==target){
47+
returnmid;
48+
}else{
49+
end=mid-1;
50+
}
51+
break;
52+
default:
53+
if(mid===arrlen-1||nums[mid+1]!==target){
54+
returnmid;
55+
}else{
56+
begin=mid+1;
57+
}
58+
break;
59+
}
60+
}elseif(midVal>target){
61+
end=mid-1;
62+
}elseif(midVal<target){
63+
begin=mid+1;
64+
}
65+
}
66+
67+
return-1;
68+
};

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp