美文网首页
二分搜索

二分搜索

作者: 晨光523152 | 来源:发表于2020-07-09 21:51 被阅读0次

二分搜索模板

给一个有序数组和目标值,找到第一次/最后一次/任何一次出现的索引,如果没有出现返回-1

模板四点要素:

  • 初始化:start = 0,end = len - 1
  • 循环退出条件:start + 1 < end
  • 比较中点和目标值:A[mid] ==,<,> target
  • 判断最后两个元素是否符合:A[start],A[end]?target

时间复杂度是0(logn),使用场景一般是有序数组的查找

二分搜索模板

class Solution:
    def search(self, nums: List[int], target: int) -> int:
        start = 0
        end = len(nums) - 1
        while end - start > 1:
            mid = start + int((end - start)/2)  ###(start + end) // 2
            if nums[mid] > target:
                end = mid
            elif nums[mid] < target:
                start = mid
            else:
                end = mid # 之前一直写的return mid
        if nums[start] == target:
            return start
        elif nums[end] == target:
            return end
        else:
            return -1

搜索二维矩阵

image.png

通过这样,变成一个传统的一维数组的二分查找
重点在于:

row = idx // n
col = idx % n

参考资料:
https://leetcode-cn.com/problems/search-a-2d-matrix/solution/sou-suo-er-wei-ju-zhen-by-leetcode/
https://greyireland.gitbook.io/algorithm-pattern/ji-chu-suan-fa-pian/binary_search

相关文章

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

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

  • 算法-二分搜索算法

    算法:二分搜索算法(折半查找算法)时间复杂度: 二分搜索算法概述 二分搜索算法伪代码 二分搜索算法实现 二分搜索算...

  • 搜索算法

    顺序搜索 二分搜索

  • 二分搜索(Binary_Search)

    1. 二分搜索是什么? 二分搜索(英语:binary search),也叫折半搜索(英语:half-interva...

  • AVL 树

    一:什么是 AVL 树? 在我的上一篇文章《二分搜索树与二分查找法》中,详细介绍了二分搜索树这种数据结构。二分搜索...

  • 二分算法-LeetCode 69

    二分算法-LeetCode 69 二分算法 二分算法模板, 二分搜索即搜索一个数,如果存在,返回其索引,否则返回-...

  • Pearls9. 代码调优

    [TOC] 问题:在包含1000个整数的表中进行二分搜索: 二分搜索的调优 说明:在二分搜索中通常不需要代码调优 ...

  • Pearls4 编写正确的程序

    4.1 二分搜索

  • 手敲数据结构——使用二分搜索树实现Set

    关于实现二分搜索树,可以看前面的文章 手敲数据结构——二分搜索树

  • 分治算法(二分搜索)

    每日一言 : 当我们真正热爱这世界时,我们才真正生活在这世上。——泰戈尔 二分搜索 什么是二分搜索 二分搜索又叫二...

网友评论

      本文标题:二分搜索

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