zoukankan      html  css  js  c++  java
  • leetcode 35.搜索插入位置

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

    你可以假设数组中无重复元素。

    示例 1:

    输入: [1,3,5,6], 5
    输出: 2

    解法一:for循环

    var searchInsert = function(nums, target) {
            for(let i =0; i<nums.length; i++){
                if(nums[i] >= target){
                    return i
                }
            }
            return nums.length
    };

    解法二:二分法

    var searchInsert = function(nums, target) {
        let left = 0;
        let right = nums.length-1
        while(left <= right){
            let mildle = Math.round( (left + right)/2)
        if(nums[mildle] == target) {
            return mildle
        }else if(target > nums[mildle]) {
            left = mildle+1
        }else if (target < nums[mildle]){
            right = mildle-1
        }
      }
      return left 
    };

    二分法使用于数据量大时,使用前提是数组需要先排好序,最主要的思想是对序列进行递归或者循环查找

    注意:为什么最后要返回left,是因为循环结束的条件是left > right,所有left更接近中间值。建议大家在纸上设置几个参数,画一下,就很容易理解

    时间复杂度:最坏的情况查找最后一个元素0(log2n),最好的情况是中间元素即为要找的那个元素,0(1)

    不积跬步无以至千里
  • 相关阅读:
    GenericServlet vs HttpServlet
    il c井
    额。。万恶之源就是c
    js算数优先级
    connect-flash 中间件
    触发bfd 的条件
    module 和 module.exports 的区别
    a标签填充父容器
    bootstrap
    每日一练排版
  • 原文地址:https://www.cnblogs.com/lyt0207/p/12423770.html
Copyright © 2011-2022 走看看