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

2025年-G14-Lc88-278.第一个坏版本 -java版

1.题目描述
第一个坏版本
你是一名产品经理,目前领导一个团队开发新产品。不幸的是,你产品的最新版本未通过质量检查。由于每个版本都是基于前一个版本开发的,所以坏版本之后的所有版本也都是坏的。假设你有 n 个版本 [1, 2, …, n],你想找出第一个坏版本,它导致后面所有版本都变坏。给你一个 API bool isBadVersion(version),它返回版本是否坏。实现一个函数来查找第一个坏版本。你应该尽量减少对 API 的调用次数。
在这里插入图片描述
2.思路
在这里插入图片描述
用二分查找,如果中间mid是坏的,那么所以第一个坏版本在mid的左边。
如果中间mid是好的,那么第一个坏的版本在mid的右边。当left和right重合时,left就是第一个坏版本。

3.java代码

/* The isBadVersion API is defined in the parent class VersionControl.
      boolean isBadVersion(int version); */

public class Solution extends VersionControl {
    public int firstBadVersion(int n) {
        int left=1;
        int right=n;
        while(left<right)
        {
            int mid=left+(right-left)/2;
            if(isBadVersion(mid))
            {
                right=mid;//如果该元素是坏元素,所以要向左边寻找坏元素,所以右指针往左
                //right = mid; 是正确的选择,因为我们在寻找第一个坏版本时,如果 mid 是坏版本,它可能就是第一个坏版本,因此需要保留 mid 继续查找。
            }
            else//如果该元素不是坏元素,所以要向右边寻找坏元素,所以左指针往右
            {
                left=mid+1;
            }
        }
         
        return left; //当left==right的时候, 返回第一个坏版本
    }
}

相关文章:

  • 【电机控制】42步进电机+arduino:WHEELTEC_MS42DDC
  • ubuntu部署小笔记-采坑
  • 【Java】File 类
  • SQLite 删除表
  • 054 redisson
  • 安全面试3
  • Python 中read、readline、readlines 有哪些区别?
  • 针对不同文本长度的处理方案,结合层次化编码和检索优化策略
  • C语言数据结构———循环消息队列,数组方式实现
  • 零基础学QT、C++(六)制作桌面摄像头软件
  • 利用miniqmt实现远程下单:量化交易的新突破
  • Python爬虫-批量爬取股票数据猫各股票代码
  • Open WebUI 是什么
  • centos9安装k8s集群
  • C#从入门到精通(34)—如何防止winform程序被同时打开多次
  • 嵌入式之宏定义编程机制
  • vue中将el-table导出为excel文件
  • Django Admin: 动态合并数据库和预定义选项的高级过滤器实现
  • 【废物研究生刷算法】字符串
  • 嵌入式标志位解决程序卡顿问题
  • 习近平同欧洲理事会主席科斯塔、欧盟委员会主席冯德莱恩就中欧建交50周年互致贺电
  • 罗志田:文学革命的社会功能与社会反响
  • 新势力4月销量出炉:零跑逾4万辆再夺冠,蔚来环比增近六成,小米下滑
  • 五一假期首日,多地党政主官暗访督查节日安全和值班值守工作
  • 五大光伏龙头一季度亏损超80亿元,行业冬天难言结束
  • 4月人民币对美元即期汇率微跌,今年以来升值0.48%