美文网首页
带重复元素的二分搜索

带重复元素的二分搜索

作者: 红鲤鱼与绿鲤鱼与鱼_e544 | 来源:发表于2018-05-06 18:49 被阅读0次

给定排好序的数组和一个数,从数组中找出最早出现该数的下标。

# coding: utf-8
# @author zhenzong
# @date 2018-05-06 18:49


def binary_search(array, target):
    left, right = 0, len(array) - 1

    while left < right:
        mid = (left + right) >> 1
        if array[mid] < target:
            left = mid + 1
        else:
            right = mid

    return right if array[right] == target else -1


print binary_search([1, 2, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 7], 5)
print binary_search([1, 2, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 7], 8)
print binary_search([1, 2, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 7], 7)
print binary_search([1, 2, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 7], 1)

# 输出
# 8
# -1
# 15
# 0

相关文章

  • 带重复元素的二分搜索

    给定排好序的数组和一个数,从数组中找出最早出现该数的下标。

  • 数据结构-集合和映射

    Set 不能存放重复元素接口方法 二分搜索树实现 借助前面的二分搜索树,可以很轻松的实现Set 链表实现 使用前面...

  • 查找

    二分查找 二分搜索,即在有序数组中,查找某一特定元素的搜索。它从中间的元素开始,如果中间的元素是要找的元素,则返回...

  • 数据结构

    二分搜索树 向二分搜索树中插入元素的两种方法 判断数组中的元素是否是从小到大排序的 判断二叉树是否是一棵二分搜索树...

  • 15. 3Sum

    key tips 将3-sum问题转化为2-sum问题,对于有可能重复的元素,对数组进行排序,然后利用近似二分搜索...

  • 数据结构和算法之——二分查找下

    最简单的二分查找情况下,我们假设数组中没有重复元素,因此很容易实现。如果数组中存在重复元素,二分查找就没有想象中那...

  • 算法-数组算法总结

    数组类型总结 1 二分法 思路:前提是数组为有序数组,同时题目还强调数组中无重复元素,因为一旦有重复元素,使用二分...

  • 二分查找-Python刷题笔记

    二分搜索是一种在有序数组中查找某一特定元素的搜索算法。 搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元...

  • 【leetcode边做边学】二分查找应用

    二分查找 二分查找算法是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好...

  • Algorithm进阶计划 -- 二分搜索

    二分搜索二分搜索模板二分搜索运用 1. 二分搜索模板 二分搜索(二分查找)也称折半查找(Binary Search...

网友评论

      本文标题:带重复元素的二分搜索

      本文链接:https://www.haomeiwen.com/subject/rcgurftx.html