首页 > 其他分享 >基础二分查找

基础二分查找

时间:2023-02-15 21:47:24浏览次数:54  
标签:二分 right target nums 基础 middle 查找 区间 left

二分查找力扣题目链接

[704. 二分查找 - 力扣(LeetCode)],

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

解题思路:

使用二分查找的方式来进行题解。确定给定的数组区间,确定middle。判断target与middle的关系,来选择target在区间的那部分。

  if(target == nums[middle])

  return middle;

else if(target < nums[middle])

//target 在区间左侧,变更右侧边界,由于nums[middle]与target不相等,且target在区间左侧,所以对比middle的前一个元素。最右侧边界即为middle -1;重新计算middle值,进行判断。

{right = middle -1;}

else if(target > nums[middle])

//target 在区间右侧,变更左侧边界,由于nums[middle]与target不相等,且target在区间左侧,所以对比middle的前一个元素。最右侧边界即为middle +1; 重新计算middle值,进行判断。

{left = middle+1;}

区间定义问题:

 

在二分查找中,常见的疑点就是区间的判断会很迷惑,不知道是选择左闭右开,还是选择左闭右闭区间。

情况一:

当使left <= right的时候,存在两种情况有效:left == right,left < right。

因此,数组的区间情况包括:

left = right, [left,right];

此时数组left = right时,对与数组元素的取值nums[right]是有效值,所以right值应为nums.size()-1;

这时数组的区间为左闭又闭。

情况二:

当时left<right的时候,仅有一种情况。

此时nums[right]为无效值。所以此时right的值为nums.size();

数组区间为左闭右开。

 


标签:二分,right,target,nums,基础,middle,查找,区间,left
From: https://www.cnblogs.com/kknothing/p/17124799.html

相关文章

  • Java基础语法
    Java基础语法注释注释是不会执行的,而是给写代码的人看的。分为单行注释、多行注释、文档注释。单行注释://注释内容多行注释:/*注释内容*/文档注释(JavaDoc)......
  • linux基础命令
    1.文件方面lscatcdrmcpmvvi或vimfinddirgrep2.系统方面ipifconfigserviceuserpasswdsudosuchmod3.符号(重定向和管道符);|>>>2>问题如......
  • 代码随想录算法训练营 第一天 | 704. 二分查找,27. 移除元素
    二分查找心得:1,两种区间查找方式 第一种左闭右闭 关键有三点从0到length-1 边界取值left=mid+1或right=mid-1 查找条件是left<=right第二种左闭右开 ......
  • Vue的基础操作
    目录Vue的基础操作js的几种循环方式v-for可以循环的变量js的循环方式key值的解释数组,对象的检测与更新input事件v-model双向数据绑定过滤事件事件修饰符(了解)按键修饰符单......
  • Java常用类的一些基础API的使用
    数字相关类、日期时间API、系统相关类、数组工具类及自然排序和定制排序的介绍Author:MsuenbDate:2023-02-15数字相关类Math类java.lang.Math类包含用于执行基......
  • Linux基础——文件权限、搜索查找、解压压缩、磁盘管理、进程管理、软件包管理
    一、文件权限Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限......
  • 【算法训练营day44】完全背包基础 LeetCode518. 零钱兑换II LeetCode377. 组合总和IV
    LeetCode518.零钱兑换II题目链接:518.零钱兑换II独上高楼,望尽天涯路组合问题和完全背包的混合应用,感觉脑中模拟的不是很清晰,但是靠着背包问题的代码技巧和模板就能比较......
  • kx-顺序表:查找元素x在表中下标
    一、定义顺序表结构#defineINIT_SIZE10 ///<顺序表初始容量typedefintseqType; ///<定义顺序表元素类型///@brief顺序表结构定义typedefstructt_sqList{ s......
  • Linux基础——文件权限、搜索查找、解压压缩
    一、文件权限Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限......
  • kx-顺序表:查找元素是否在表中
    一、定义顺序表结构#defineINIT_SIZE10 ///<顺序表初始容量typedefintseqType; ///<定义顺序表元素类型///@brief顺序表结构定义typedefstructt_sqList{ s......