力扣704.二分查找

Posted 才浅的每日python

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣704.二分查找相关的知识,希望对你有一定的参考价值。

二分查找步骤:

  • 如果目标值等于中间元素,则找到目标值。

  • 如果目标值小于中间元素,继续在左侧搜索。

  • 如果目标值大于中间元素,则继续在右侧搜索。

  • 如果最终搜索区间的左右节点重合也未找到,则表明不存在该值返回-1

时间复杂度O(logN)


非递归方法实现

def search(nums, target): start, end = 0, len(nums)-1 while start < end: mid = start + (end - start)//2 if target == nums[mid]: return mid if target < nums[mid]: end = mid - 1 else: start = mid + 1 return -1
nums = [-1, 0, 3, 5, 9, 12]target = 9print(search(nums, target))# 输出4


递归方法实现

def search(nums, target): def bs(i, j): if i > j: return -1 # 设置终止条件 m = (i + j) // 2 if target == nums[m]: return m elif target < nums[m]: return bs(i, m - 1) else: return bs(m + 1, j)
return bs(0, len(nums) - 1)



— END —

以上是关于力扣704.二分查找的主要内容,如果未能解决你的问题,请参考以下文章

精选力扣500题 第20题 LeetCode 704. 二分查找c++详细题解

力扣每日一题 704. 二分查找

代码随想录算法训练营第一天 | 704. 二分查找27. 移除元素

代码随想录算法训练营第一天 | 704. 二分查找27. 移除元素

LeetCode刷题704-简单-二分查找

LeetCode刷题704-简单-二分查找