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

力扣刷题(第六十四天)

灵感来源 

- 保持更新,努力学习

- python脚本学习

第一个错误的版本

解题思路

  1. 初始化左右边界:左边界 left = 1,右边界 right = n
  2. 二分查找循环
    • 计算中间版本号 mid
    • 若 mid 是错误版本,说明第一个错误版本在 [left, mid] 中,更新右边界。
    • 若 mid 不是错误版本,说明第一个错误版本在 [mid+1, right] 中,更新左边界。
  3. 终止条件:当 left 和 right 相遇时,即为第一个错误版本。
    # The isBadVersion API is already defined for you.
    # @param version, an integer
    # @return a bool
    # def isBadVersion(version):class Solution:def firstBadVersion(self, n):""":type n: int:rtype: int"""left, right = 1, nwhile left < right:mid = left + (right - left) // 2  # 防止整数溢出if isBadVersion(mid):# 第一个错误版本在[left, mid]中right = midelse:# 第一个错误版本在[mid+1, right]中left = mid + 1# 循环结束时,left和right指向同一个位置return left

逐行解释

# The isBadVersion API is already defined for you.
# @param version, an integer
# @return a bool
# def isBadVersion(version):class Solution:def firstBadVersion(self, n):""":type n: int:rtype: int"""# 初始化左边界为第一个版本left = 1# 初始化右边界为最后一个版本right = n# 循环条件:左边界严格小于右边界# 当left == right时,循环结束,此时的left即为第一个错误版本while left < right:# 计算中间版本号,使用(left + right) // 2可能导致整数溢出# 例如当left和right都接近INT_MAX时,加法会溢出mid = left + (right - left) // 2# 检查中间版本是否为错误版本if isBadVersion(mid):# 如果中间版本是错误的,第一个错误版本可能是mid或在mid左侧# 因此更新右边界为mid(注意:没有减1,因为mid可能就是答案)right = midelse:# 如果中间版本不是错误的,第一个错误版本必然在mid右侧# 因此更新左边界为mid + 1left = mid + 1# 循环结束时,left和right指向同一个位置,即第一个错误版本return left

http://www.lqws.cn/news/462727.html

相关文章:

  • 咨询大师——解读96页麦肯锡金字塔原理【附全文阅读】
  • Qt输入数据验证的方法
  • 服务器架构---三高是什么
  • Ruby 范围(Range)
  • 如何用 eBPF 实现 Kubernetes 网络可观测性?实战指南
  • DM8故障分析工具-AWR报告
  • PY32学习(2)-搭建Keil环境
  • 基于SpringBoot+Uniapp的活动中心预约小程序(协同过滤算法、腾讯地图、二维码识别)
  • Linux 内核中 TCP 协议栈的输出实现:tcp_output.c 文件解析
  • 蓝牙数据通讯,实现内网电脑访问外网电脑
  • 针对机器人自修复材料的具体推荐及特性分析
  • STM32 CAN简介及帧格式
  • 操作系统内核态和用户态--1-基础认识
  • [Github]GitHub 2FA快速安全配置全攻略
  • 解决SQL映射文件的警告提示
  • Vue 3 + Axios 完整入门实战指南
  • Docker学习笔记:DockerFile
  • XCVU47P-2FSVH2892E Xilinx Virtex UltraScale+ FPGA AMD
  • 解锁K-近邻算法:数据挖掘的秘密武器
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 04(题目+回答)
  • Python 数据分析与可视化 Day 3 - Pandas 数据筛选与排序操作
  • 当数据自己会说话:聚类与分类算法全景解析
  • 大模型在急性弥漫性腹膜炎预测及治疗方案制定中的应用研究
  • springboot口腔管理平台
  • CSS 动画:深入解析与高效实践
  • cursor中定义cursor rules
  • 【入门】【例18.2】 孔融让梨
  • 华为云Flexus+DeepSeek征文 | 基于Flexus X实例的金融AI Agent开发:智能风控与交易决策系统
  • 《Effective Python》第九章 并发与并行——使用 concurrent.futures 实现真正的并行化
  • shell脚本--条件