美文网首页
LeetCode 704. 二分查找

LeetCode 704. 二分查找

作者: 草莓桃子酪酪 | 来源:发表于2022-07-03 05:11 被阅读0次
题目

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

算法要求

线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

方法
  • 将数据变成有序数据
  • 确定此区间的最小下标low、最大下标high和中间下标mid
  • 若low ≤ high,则一直循环:
    判断mid所对应的值是否等于想要查找的值,若是,则返回mid,结束循环
    判断mid所对应的值是否小于想要查找的值,若是,则low = mid + 1
    判断mid所对应的值是否大于想要查找的值,若是,则high = mid - 1
  • 若以上均不成立,则此数值不在数据中,返回-1
class Solution(object):
    def search(self, nums, target):
        low = 0
        high = len(nums) - 1
        while low <= high:
            mid = (low + high) // 2
            if target == nums[mid]:
                return mid 
            elif target < nums[mid]:
                high = mid - 1
            else:
                low = mid + 1
        return -1
相关知识
  • 二分查找:
    要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列
    • 将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功
    • 否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表
    • 重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功
参考

代码相关:https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html

相关文章

网友评论

      本文标题:LeetCode 704. 二分查找

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