当前位置: 首页 > 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
http://www.lryc.cn/news/536703.html

相关文章:

  • VUE环境搭建
  • MATLAB图像处理:Sobel、Roberts、Canny等边缘检测算子
  • C++ 标准库常见容器
  • Ubuntu+Laravel+MQ+Supervisor队列系统搭建流程
  • 力扣100. 相同的树(利用分解思想解决)
  • 全面了解HTTP(一)
  • element-ui时间组件同一个月内选择/30天内选择
  • NO.18十六届蓝桥杯备战|循环嵌套|乘法表|斐波那契|质数|水仙花数|(C++)
  • 深入浅出Java反射:掌握动态编程的艺术
  • 大模型被偷家?CNN结合多模态!
  • UI自动化测试的优缺点?
  • 在 Kubernetes (K8s) 环境中,备份 PostgreSQL 数据库
  • 机器视觉中的3d和2d的区别
  • exr 格式下 全景图(经纬图、panorama)转 cubemap
  • STM32 ADC介绍(硬件原理篇)
  • snort3.0 获取注册规则(19000多条)
  • 【GitHub】装修个人主页
  • 名词解释:npm,cnpm,yarn,vite,vue,electron
  • XMOS的多项音频技术创新将大模型与边缘AI应用密切联系形成生态化合
  • 九.Spring Boot使用 ShardingSphere + MyBatis + Druid 进行分库分表
  • 大数据治理:构建数据驱动的未来基石
  • 常见的几种设计模式(详细)——应用场景和实现方式
  • SonarQube
  • Nginx 之Rewrite 使用详解
  • 注册Gmail如何跳过手机验证环节?
  • WordPress自助建站全攻略
  • TreeSet(单列集合)
  • Elasticsearch:同义词在 RAG 中重要吗?
  • Docker安装分布式vLLM
  • 可视化实操记录(自用)