File tree Expand file tree Collapse file tree 2 files changed +37
-0
lines changed
Search in Rotated Sorted Array Expand file tree Collapse file tree 2 files changed +37
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[] } nums
3+ * @param {number } target
4+ * @return {number }
5+ */
6+ var search = function ( nums , target ) {
7+ const len = nums . length ;
8+ let low = 0 ;
9+ let high = len - 1 ;
10+
11+ // 边缘情况
12+ if ( nums . length === 1 ) return nums [ 0 ] === target ? 0 : - 1 ;
13+
14+ while ( low < high ) {
15+ let mid = parseInt ( ( low + high ) / 2 ) ;
16+ if ( nums [ mid ] === target ) return mid ;
17+ if ( nums [ high ] === target ) return high ;
18+ if ( nums [ low ] === target ) return low ;
19+ if ( nums [ mid ] > nums [ low ] ) {
20+ // 左边升序
21+ if ( nums [ low ] < target && target < nums [ mid ] ) {
22+ high = mid ;
23+ } else {
24+ low = mid + 1 ;
25+ }
26+ } else {
27+ // 右边升序
28+ if ( nums [ mid ] < target && target < nums [ high ] ) {
29+ low = mid + 1 ;
30+ } else {
31+ high = mid ;
32+ }
33+ }
34+ }
35+ return - 1 ;
36+ } ;
Original file line number Diff line number Diff line change 1+ 如果mid的值大于low,则代表左边是升序,否则右边升序,如果目标已经在升序序列中,直接对该序列进行常规二分法查找,否则继续查找直到查找到升序序列
You can’t perform that action at this time.
0 commit comments