-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy path0081_SearchinRotatedSortedArrayII.js
40 lines (35 loc) · 1.15 KB
/
0081_SearchinRotatedSortedArrayII.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
33
34
35
36
37
38
39
40
/**
* @param {number[]} nums
* @param {number} target
* @return {boolean}
*/
var search = function(nums, target) {
function binarySearch(nums, target){
let l_pointer = 0;
let r_pointer = nums.length-1;
while(l_pointer<r_pointer){
let half = l_pointer + Math.floor((r_pointer-l_pointer)/2)
if(nums[half] == target){
return true;
}
while(l_pointer < half && nums[l_pointer] == nums[half]){
l_pointer++
}
if(nums[l_pointer] <= nums[half]){
if(target >= nums[l_pointer] && target < nums[half]){
r_pointer = half - 1
} else {
l_pointer = half + 1
}
} else {
if(target > nums[half] && target <= nums[r_pointer]){
l_pointer = half + 1;
} else {
r_pointer = half -1
}
}
}
return nums[l_pointer] == target ? true : false
}
return binarySearch(nums,target)
};