【C++】二分查找算法(模板)

重点

只需要记住两点:
1.left = right 时,一定就是最终结果(包括找不到目标值),无需再次判断,如果判断就会死循环
2.求中点如果是求左端点 mid = left + (right - left)/2
如果是求右端点 mid = left + (right - left + 1)/2
简称(右加一)
请添加图片描述
请添加图片描述

class Solution {
public:
    vector<int> searchRange(vector<int>& nums, int target) {
       
       if(nums.size() == 0) return {-1, -1};
       int left = 0;
       int right = nums.size()-1;
       //寻找左点端
       int begin = 0;
       while(left < right)
       {
        int mid = left + (right - left)/2;
        if(nums[mid] < target) left = mid+1;
        else if(nums[mid] >= target) right = mid;
       }
      if(nums[left] != target) return {-1, -1};
        else begin = left;
       
       //寻找右端点
       left = 0;
       right = nums.size()-1;
       while(left < right)
       {
        int mid = left + (right-left+1)/2;
        if(nums[mid]<=target) left = mid;
        else right = mid-1; 
       }
       return {begin,right};
    }
};

相关推荐

  1. C++ 算法——二分查找

    2024-04-03 16:36:03       22 阅读
  2. 简单二分查找C++算法

    2024-04-03 16:36:03       63 阅读
  3. 突破编程_C++_查找算法二分查找

    2024-04-03 16:36:03       48 阅读
  4. 算法二分查找C语言版)

    2024-04-03 16:36:03       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-03 16:36:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-03 16:36:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-03 16:36:03       82 阅读
  4. Python语言-面向对象

    2024-04-03 16:36:03       91 阅读

热门阅读

  1. 【PostgreSQL】postgresql触发OOM解析

    2024-04-03 16:36:03       32 阅读
  2. 2.docker 镜像相关命令

    2024-04-03 16:36:03       38 阅读
  3. springboot Guacamole

    2024-04-03 16:36:03       30 阅读
  4. 回溯算法C实现

    2024-04-03 16:36:03       44 阅读
  5. 关于自动化测试工具RobotFrameWork

    2024-04-03 16:36:03       37 阅读
  6. React 优先级队列小顶堆的简单实现

    2024-04-03 16:36:03       42 阅读