题解 | #数字在升序数组中出现的次数#

数字在升序数组中出现的次数

http://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2

思想

二分,但是因为这道题的特殊性,需要注意到左右两个边界的判断,这个判断的过程是在data[mid] == k的时候进行的,这里设计两个函数分别对左边界和右边界进行判断。

复习:

def getLeftIndex(l, r, k):
    while l <= r:
        mid = (l + r) // 2
        if data[mid] < k:
            l = mid + 1
        elif data[mid] > k:
            r = mid - 1
        else:
          # 这里判断是否还能够左移,判断是否到达左边界,否则继续移动
          if mid > 0 and data[mid - 1] == k:
              r = mid -1
          else:
              return mid
    return -1
 
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务