39 lines
766 B
JavaScript
39 lines
766 B
JavaScript
/**
|
|
* @param {number[]} nums
|
|
* @param {number} target
|
|
* @return {number}
|
|
*/
|
|
export const search = function (nums, target) {
|
|
// 参考 src/array/binary-search.js
|
|
let l = 0
|
|
let r = nums.length - 1
|
|
while (l <= r) {
|
|
const mid = l + ((r - l) >> 1)
|
|
if (nums[mid] === target) return mid
|
|
|
|
if (nums[l] <= nums[mid]) {
|
|
if (nums[mid] > target && nums[l] <= target) {
|
|
r = mid - 1
|
|
} else {
|
|
l = mid + 1
|
|
}
|
|
} else {
|
|
if (nums[mid] < target && nums[r] >= target) {
|
|
l = mid + 1
|
|
} else {
|
|
r = mid - 1
|
|
}
|
|
}
|
|
}
|
|
return -1
|
|
}
|
|
|
|
/**
|
|
* @param {number[]} nums
|
|
* @param {number} target
|
|
* @return {number}
|
|
*/
|
|
// export const search = (nums, target) => {
|
|
// return nums.indexOf(target)
|
|
// }
|