Skip to content

Commit df286c4

Browse files
author
tanjiasheng
committed
Search in Rotated Sorted Array
1 parent fc7a12c commit df286c4

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
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+
};
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
如果mid的值大于low,则代表左边是升序,否则右边升序,如果目标已经在升序序列中,直接对该序列进行常规二分法查找,否则继续查找直到查找到升序序列

0 commit comments

Comments
 (0)