当前位置: 首页 > article >正文

专题三二分算法

1.题目

题目分析:给一个目标数字,然后在数组里找到对应目标数字的下标,找不到就返回0

 2.算法原理

先用left和right在数组两端,然后求出中间值,跟目标数字对比,如果大了就把right--,因为数组是有序的,所以要把中间值往左移一点来减少值,如果小了就把left++来把值放大,直到值与目标数字一样,如果没有找到就不存在。

补充:二分查找本质是二段性,通过分段把没有用的区间给舍弃掉,只留下有用的区间,然后一直重复过程,直到把区间缩短到很小的范围,并找到目标值。

二分查找的时间复杂度 

二分查找模板 

3.代码实现

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int left=0,right=nums.size()-1;
        while(left<=right)
        {
            int min=left+(right-left)/2;
            if(nums[min]<target) left++;
            else if(nums[min]>target) right--;
            else return min;
        }
        return -1;
    }
};


http://www.kler.cn/a/581346.html

相关文章:

  • 游戏引擎学习第150天
  • 正则表达式(2)匹配规则
  • 2012. 数组美丽值求和
  • 《火山引擎:开启数字化增长新引擎》
  • 【学习笔记】《逆向工程核心原理》01-逆向分析Hello World程序
  • 重构及封装
  • 2025-3-11 leetcode刷题情况(贪心算法--区间问题)
  • 计算机视觉算法实战——昆虫识别检测(主页有源码)
  • CSS小玩意儿:目录
  • 树莓派4B使用Ubuntu20.04连接不上热点
  • conda创建Python虚拟环境的原理
  • 基于 Vue 的Deepseek流式加载对话Demo
  • 基于python下载ERA5小时尺度和月尺度的数据
  • 【反无人机数据集】【目标检测】基于深度学习和距离分析的无人机检测图像处理技术应用
  • 基于MATLAB的冰块变化仿真
  • XTDrone调试报错问题集锦
  • 动态规划详解(二):从暴力递归到动态规划的完整优化之路
  • NLP常见任务专题介绍(2)-多项选择任务(MultipleChoice)训练与推理模板
  • SpringBoot开发——整合SpringReport开源报表工具
  • Git的命令学习——适用小白版