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

数组_二分查找

数组_二分查找

  • 一、leetcode-572
  • 二、题解
    • 1.代码
    • 2.思考


一、leetcode-572

二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

样例输入:nums = [-1,0,3,5,9,12], target = 9

样例输出: 4

解释: 9 出现在 nums 中并且下标为 4


二、题解

1.代码

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

2.思考

对区间的定义想清楚,区间的定义就是不变量。要在二分查找的过程中,保持不变量,就是在while寻找中每一次边界的处理都要坚持根据区间的定义来操作,这就是循环不变量规则。
也就是[left, right] (这个很重要非常重要)

  1. while (left <= right) 要使用 <= ,因为left == right是有意义的,所以使用 <=
  2. if (nums[middle] > target) right 要赋值为 middle - 1,因为当前这个nums[middle]一定不是target,那么接下来要查找的左区间结束下标位置就是 middle - 1

相关文章:

  • Android-构建问题记录
  • Java版PDF拼接
  • 配查查:解锁商业奥秘,赋能智慧决策
  • OpenEuler学习笔记(三十二):在OpenEuler上搭建项目管理平台
  • django静态文件配置
  • Neo4j OGM学习和体验
  • Linux中安装open-webui报sqlite版本低的解决办法
  • 【React组件通讯双重视角】函数式 vs 类式开发指南
  • 第二章:基础概念精讲 - 第二节 - Tailwind CSS 颜色系统和主题定制
  • 什么是环形分区光源
  • Edge浏览器清理主页
  • 【漫话机器学习系列】092.模型的一致性(Consistency of a Model)
  • 4.SpringSecurity在分布式环境下的使用
  • ai智能电话机器人话术处理,呼叫系统部署语音话术设置
  • 《DeepSeek R1:7b 写一个python程序调用摄像头获取视频并显示》
  • 标贝科技参编国内首个AIGC大模型功能测试标准
  • 反向代理模块
  • 蓝桥杯(B组)-每日一题
  • DeepSeek R1 671b 满血版部署笔记
  • hbase快照同步到目标集群出现ERROR Multiple regions have the same startkey问题分析
  • 中国旅游日|上天当个“显眼包”!低空经济的“飞”凡魅力
  • 国际观察丨美中东政策生变,以色列面临艰难选择
  • 广西鹿寨一水文站“倒刺扶手”存安全隐患,官方通报处理情况
  • 普京调整俄陆军高层人事任命
  • 国防部:中方愿与俄方不断增强两军关系良好发展势头
  • 欠债七十万后,一个乡镇驿站站长的中年心事