二分查找!

使用范围:

  1. 查找元素: 在有序数组中查找一个特定的元素。

  2. 找到边界: 查找有序数组中某个值的第一个或最后一个出现的位置。

  3. 搜索旋转排序数组: 在旋转排序数组中查找一个特定的元素。

  4. 查找峰值元素: 在数组中查找峰值元素。

  5. 求平方根: 计算一个非负整数的平方根。

  6. 搜索区间: 在有序数组中找到给定目标值的起始和结束位置。

  7. 缺失的数字: 在从 0 到 n 中缺失的数字。

  8. 搜索二维矩阵: 在二维矩阵中搜索一个值。

  9. 分割数组的最大值: 将数组分割为 m 段,使得每一段的和最大。

  10. 寻找旋转排序数组中的最小值: 在旋转排序数组中找到最小元素。

 

找边界:

 

 

找峰值

 

找平方根

 

找缺失的数字:如果缺失的数字在左侧,那么数组中索引位置小于该数字的元素值应该等于索引;如果缺失的数字在右侧,那么数组中索引位置大于等于该数字的元素值应该大于索引。

要求(数组顺序递增,而且只能找到一个)

如果缺失的数字很多,用unordered_map解决复杂度为On

 

 寻找旋转排序数组中的最小值

 

 

posted @ 2024-02-02 11:36  zhangdudu  阅读(8)  评论(0)    收藏  举报