`mid_search`这个函数的结构是通用结构,但少了等于k时的跳出操作,所以最后得到的l一定是对应值的右边界+1。主要讲传入的参数和return为什么是两次的差值。 因此如果找的是`k-0.5`,那么这一次的l对应的值就是第一次出现k的下标。举个例子好理解,如果`k=3,` 则`k-0.5=2.5`, 那么2.5的右侧一位就是3。 需要注意`k+0.5`有点不一样,`k+0.5=3.5`,所以右边一位是4,不是3。所以这一段**返回的l是目标值k范围的右边界+1**,而**k-0.5返回的l是目标值k范围的左边界**。因此最后直接相减就可以了。
点赞
牛客网
牛客企业服务