leecode 题目704 二分查找(python)

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

示例 1:

输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4

示例 2:

输入: nums = [-1,0,3,5,9,12], target = 2
输出: -1
解释: 2 不存在 nums 中因此返回 -1

使用了最直接的二分法写查找算法

class Solution:
    def search(self, nums: List[int], target: int) -> int:
        if len(nums)<1:
            return -1
        if nums[0] > target or nums[-1]<target:
            return -1

        length = len(nums)
        start,end = 0,length-1
        check_index = int(length/2)
        while (target- nums[check_index] != 0):
            if nums[check_index] < target:
                start = check_index
            else: end = check_index
            check_index = int((start+end)/2)
            
            # 检查该点是否存在
            if end -start <2:
                if nums[start] == target:
                    check_index = start
                elif nums[end] == target:
                    check_index = end
                else:
                    check_index = -1
                break
        return check_index
        


版权声明:本文为weixin_44230172原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。