https://leetcode-cn.com/problems/search-in-rotated-sorted-array/ 数组、二分查找

没有时间要求

  1. function search(nums: number[], target: number): number {
  2. return nums.indexOf(target)
  3. };

时间要求 logn:二分查找

【33】搜索旋转排序数组:中等 - 图1

function search(nums: number[], target: number): number {
    let len = nums.length;
    if (len === 0) return -1;
    if (len === 1) return nums[0] === target ? 0 : -1
    let l = 0;
    let r = len - 1;
    while(l <= r) {
        let mid = Math.floor((l + r) / 2)
        if (nums[mid] === target) return mid
        if (nums[0] <= nums[mid]) {
            if (nums[0] <= target && target < nums[mid]) {
                r = mid - 1;
            } else {
                l = mid + 1;
            }
        } else {
            if (nums[mid] < target && target <= nums[len - 1]) {
                l = mid + 1;
            } else {
                r = mid - 1;
            }
        }
    }
    return -1
};