Skip to content

Commit b7969bd

Browse files
committed
feat: add question 33
1 parent 437c246 commit b7969bd

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

33.data

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[3,4,5,6,7,1,2]
2+
4
3+
[4,5,6,7,0,1,2]
4+
0
5+
[4,5,6,7,0,1,2]
6+
3

33.搜索旋转排序数组.js

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/*
2+
* @lc app=leetcode.cn id=33 lang=javascript
3+
*
4+
* [33] 搜索旋转排序数组
5+
*
6+
* 1. logn 肯定是二分搜索
7+
* 2. 选取中间值后, 需要判断拐点在哪边, 来确定目标数字会在哪边
8+
* 3. 当中间值大于左端值, 则左侧是完全递增序列, 如果目标数字在左侧范围内则查找左侧, 反之查找右侧
9+
* 4. 同理, 当中间值小于左端值, 则右侧是完全递增序列, 如果目标数字在右侧范围内则查找右侧, 反之查找左侧
10+
*/
11+
12+
// @lc code=start
13+
/**
14+
* @param {number[]} nums
15+
* @param {number} target
16+
* @return {number}
17+
*/
18+
var search = function(nums, target) {
19+
let i = 0, j = nums.length - 1;
20+
21+
while (i <= j) {
22+
const mid = (i + j) >> 1;
23+
if (nums[mid] === target) {
24+
return mid;
25+
} else if (nums[mid] >= nums[i]) {
26+
if (target >= nums[i] && target < nums[mid]) {
27+
j = mid - 1;
28+
} else {
29+
i = mid + 1;
30+
}
31+
} else {
32+
if (target > nums[mid] && target <= nums[j]) {
33+
i = mid + 1;
34+
} else {
35+
j = mid - 1;
36+
}
37+
}
38+
}
39+
return -1;
40+
};
41+
// @lc code=end
42+

0 commit comments

Comments
 (0)