python 二分查找

二分查找

整体思路:

先设定左侧下标 low 和右侧下标 height,再计算中间下标 mid
每次根据 nums[mid] 和 target 之间的大小进行判断,相等则直接返回下标,nums[mid] < target 则 low右移,nums[mid] > target 则 height左移
查找结束如果没有相等值则返回 low,该值为插入位置
时间复杂度:O(logn)

class Solution(object):
    def searchInsert(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        low = 0
        height = len(nums) - 1
        res = -1
        while low <= height:
            mid = (low + height)//2
            if nums[mid] == target:
                return mid
            if nums[mid] > target:
                height = mid - 1
            else:
                low = mid + 1
        res = low
        return res
posted @ 2019-11-28 23:19  Fancey  阅读(75)  评论(0)    收藏  举报