2 、算法题

46 阅读1分钟

二分查找

leetcode.cn/problems/bi…

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var search = function(nums, target) {
     let left = 0, right = nums.length -1
     while(left <= right) {
         let mid = (left + right) >> 1
         if(nums[mid] < target) {
             left = mid + 1
         }else if(nums[mid] > target) {
             right = mid - 1
         }else {
             return mid
         }
     }
     return -1
};

递推

斐波那契数列

leetcode.cn/problems/fe…

/**
 * @param {number} n
 * @return {number}
 */
 // 超时
 // var fib = function(n) {
//     if(n <= 1)return n
//     return fib(n-1) + fib(n-2)
// };
var fib = function(n) {
    let arr = [0,1]
    for(let i =2; i<=n; i++) {
        arr[i] = arr[i-1] + arr[i -2]
        arr[i] %= (1e9+7)
    }
    return arr[n]
};

爬楼梯

leetcode.cn/problems/cl…

/**
 * @param {number} n
 * @return {number}
 */
var climbStairs = function(n) {
    if(n<=3) return n
    // return climbStairs(n-1) + climbStairs(n-2)
    let arr = [0,1,2]
    for(let i = 3; i <= n; i++){
        arr[i] = arr[i-1] + arr[i-2]
    }
    return arr[n]
};