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

【力扣算法题】每天一道,健康生活

2024年10月8日
参考github网站:代码随想录

1.二分查找

leetcode
视频

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

核心是边界处理

以左右均为闭区间为例:

第一个点是while循环中left是可以等于right的,因为[1,1]仍然有意义,否则就是丢情况;

第二个点是在进行左右两个区间分割的时候,是将middle-1传递给right或middle+1传递给left,如果将middle传递,是因为区间是闭区间,middle是被包含的,但是middle一定不是target的目标值(nums[middle] > target)。相反在左闭右开区间,开区间的部分就是传递middle了。


http://www.kler.cn/news/339367.html

相关文章:

  • 基于单片机的非接触智能测温系统设计
  • IDE启动失败
  • QD1-P3 HTML基础语法
  • C#中Tcp断线重连的两种方法
  • 头歌实践教学平台 大数据编程 实训答案(三)
  • AIGC的底层技术:生成对抗网络(GAN)、变分自编码器(VAE)、预训练模型(如GPT、BERT等)
  • 程序员 -买房历险记
  • Window11 安装Java21教程
  • 无人机航拍视频帧处理与图像拼接算法
  • Spring Boot 进阶-SpringBoot如何整合多数据源场景
  • OceanBase 3.2.2 数据库问题处理记录
  • 数据结构-4.6.KMP算法(旧版下)-朴素模式匹配算法的优化
  • 牛客:Holding Two,Inverse Pair,Counting Triangles
  • RadioGroup RadioButton底部导航栏
  • Prometheus + Grafana 监控 MySQL 数据库
  • ppt转pdf
  • 大数据毕业设计选题推荐-国产电影数据分析-Python数据可视化-Hive-Hadoop-Spark
  • JavaEE一条龙学习----前端体系介绍(一)
  • 宠物咖啡馆平台开发:SpringBoot框架的高效应用
  • mybatisplus整合springboot3出错(springboot多模块开发)