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

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的时候, 返回第一个坏版本
    }
}

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

相关文章:

  • OpenResty
  • BUU40 [安洵杯 2019]easy_serialize_php
  • 力扣-回溯-93 复原IP地址
  • 贪吃蛇小游戏的实践
  • 计算机网络:应用层 —— 文件传送协议 FTP
  • 自动化办公|xlwings生成图表
  • go io.Pipe
  • 创客匠人:知识服务还有未来吗?个人IP如何突围下半场的生死局?
  • 蓝桥杯15 填空题
  • STM32的HAL库开发---多通道ADC采集(DMA读取)实验
  • 【Spring+MyBatis】_图书管理系统(下篇)
  • 基于 Python+OpenCV 的疲劳检测系统设计与实现(源码+文档)
  • android studio kotlin项目build时候提示错误 Unknown Kotlin JVM target: 21
  • go 并发 gorouting chan channel select Mutex sync.One
  • 国产编辑器EverEdit - 在编辑器中对文本进行排序
  • 便捷批量字符一键查找替换工具
  • 从卡顿到丝滑:火山引擎DeepSeek-R1引领AI工具新体验
  • 传统的自动化行业的触摸屏和上位机,PLC是否会被取代?
  • 学习PostgreSQL专家认证
  • 蓝桥杯 Java B 组之背包问题、最长递增子序列(LIS)