81. Search in Rotated Sorted Array II
Leetcode
題目
Input: nums = [2,5,6,0,0,1,2], target = 0
Output: trueInput: nums = [2,5,6,0,0,1,2], target = 3
Output: false解答
測資
Last updated
Input: nums = [2,5,6,0,0,1,2], target = 0
Output: trueInput: nums = [2,5,6,0,0,1,2], target = 3
Output: falseLast updated
var search = function(nums, target) {
if(target === nums[0]) return true;
const binarySearch = (low, high) => {
while(low < high) {
// console.log(low, high)
const mid = Math.floor((low + high) / 2);
if(nums[mid] === target) return true;
if(nums[mid] > nums[0]) {
if(target > nums[0]) {
if(target > nums[mid]) low = mid + 1;
else high = mid;
} else {
low = mid + 1;
}
} else if(nums[mid] < nums[0]) {
if(target > nums[0]) high = mid;
else {
if(target > nums[mid]) low = mid + 1;
else high = mid;
}
} else {
// nums[mid] === nums[0] 的狀況下,往左右都進行尋找
return binarySearch(mid+1, high) || binarySearch(low, mid);
}
}
return target === nums[low];
}
return binarySearch(0, nums.length - 1)
};let nums = [2,5,6,0,0,1,2], target = 0; // true
nums = [2,5,6,0,0,1,2], target = 3; // false
nums = [1,0,1,1,1,1,1,1,1,1], target = 0; // true
nums = [1,1,1,1,1,1,1,1,1,0,1], target = 0; // true
console.log(search(nums, target))