二分查找

二分搜索模板

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

模板四点要素

  • 1、初始化:start=0、end=len-1

  • 2、循环退出条件:start + 1 < end

  • 3、比较中点和目标值:A[mid] ==、 <、> target

  • 4、判断最后两个元素是否符合:A[start]、A[end] ? target

1、704. 二分查找

class Solution:
    def search(self, nums: List[int], target: int) -> int:
        start = 0
        end = len(nums) - 1

        while 1 < end - start:
            mid = int((end - start) / 2) + start
            if nums[mid] > target:
                end = mid
            elif nums[mid] < target:
                start = mid
            elif nums[mid] == target:
                return mid
        if nums[start] == target:
            return start
        if nums[end] == target:
            return end
        return -1

  

posted @ 2020-12-10 16:56  哈哈哈喽喽喽  阅读(75)  评论(0编辑  收藏  举报