-
Notifications
You must be signed in to change notification settings - Fork 0
/
JZ6.旋转数组的最小数字.js
32 lines (30 loc) · 892 Bytes
/
JZ6.旋转数组的最小数字.js
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
function minNumberInRotateArray(rotateArray){
let left = 0;
let right = rotateArray.length-1;
let index = 0;
while(rotateArray[left]>=rotateArray[right]){
if(left+1 === right){
index = right;
break;
}
const mid = (left+right) >> 1;
if(rotateArray[left] === rotateArray[right] && rotateArray[left] === rotateArray[mid]){
let minVal = rotateArray[left];
let minIndex = left;
for(let i=left+1;i<right+1;i++){
if(rotateArray[i] < minVal){
minVal = rotateArray[i];
minIndex = i;
}
}
index = minIndex;
break;
}
if(rotateArray[mid]>=rotateArray[left]){
left = mid;
}else{
right = mid;
}
}
return rotateArray[index];
}