力扣刷题日记-704-二分查找

69 阅读1分钟
  • 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

来源:力扣(LeetCode) 链接:leetcode.cn/problems/bi… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var search = function (nums, target) {
    // 方法一
    // let s = 0, e = nums.length - 1;
    // while (s <= e) {
    //     let m = Math.floor((s + e) / 2)
    //     if (target > nums[m]) {
    //         s = m + 1
    //     } else if (target < nums[m]) {
    //         e = m - 1
    //     } else {
    //         return m
    //     }
    // }
    // return -1


    // 方法二
    const searchNum = (arr, s, e, key) => {
        let m = Math.floor((s + e) / 2)
        if (s <= e) {
            if (key > arr[m]) {
                return searchNum(arr, m + 1, e, key)
            } else if (key < arr[m]) {
                return searchNum(arr, s, m - 1, key)
            } else {
                return m
            }
        } else {
            return -1
        }
    }
    return searchNum(nums, 0, nums.length - 1, target)
};