码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 二分查找的模板


    这篇博客的二分用的都是左闭右闭的区间,对于二分来说还是我还是习惯这样写

    最传统的二分查找,用左闭右闭写

    1. int search(vector<int>& nums, int target) {
    2. int left = 0;
    3. int right = nums.size() - 1; // 定义target在左闭右闭的区间里,[left, right]
    4. while (left <= right) { // 当left==right,区间[left, right]依然有效,所以用 <=
    5. int middle = left + ((right - left) / 2);// 防止溢出 等同于(left + right)/2
    6. if (nums[middle] > target) {
    7. right = middle - 1; // target 在左区间,所以[left, middle - 1]
    8. } else if (nums[middle] < target) {
    9. left = middle + 1; // target 在右区间,所以[middle + 1, right]
    10. } else { // nums[middle] == target
    11. return middle; // 数组中找到目标值,直接返回下标
    12. }
    13. }
    14. // 未找到目标值
    15. return -1;
    16. }

    左闭右开来写&

  • 相关阅读:
    学生管理系统JAVA
    MR混合现实情景实训教学系统模拟历史情景
    从FAST TCP到POWERTCP
    c++多态
    Jmeter之单接口的性能测试
    java计算机毕业设计海东市乐都区沙果线上线下销售管理平台源码+mysql数据库+系统+lw文档+部署
    【Flutter 面试题】解释 Flutter的热重载(Hot Reload)功能
    基于JAVAWEB的文具售卖网的设计与实现
    微信小程序标题栏封装
    [题] 不容易系列之(3)―― LELE的RPG难题 #DP
  • 原文地址:https://blog.csdn.net/weixin_51609435/article/details/127789458
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号