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

LeetCode 704 二分查找 Java

1.确定区间的定义

写二分法,区间的定义一般为两种,左闭右闭即[left, right],或者左闭右开即[left, right)。

左闭右闭,边界值都能取到,左闭右开,左边界可以取到,右边界取不到

先放代码,相关的描述放在代码里了

class Solution {public int search(int[] nums, int target) {//左闭右闭区间//int left=0,right=nums.length-1;// while(left<=right){//     int mid=left+(right-left)/2;//     if(nums[mid]==target){//         return mid;//     }//     else if(nums[mid]<target){//         left=mid+1;//     }//     else if(nums[mid]>target){//         right=mid-1;//     }// }// return -1;//左闭右开区间int left=0,right=nums.length;while(left<right){int mid=left+(right-left)/2;if(nums[mid]==target){return mid;}else if(nums[mid]<target){left=mid+1;}else if(nums[mid]>target){right=mid;}}return -1;}
}

2.左闭右闭区间 [left, right]

   左闭右闭区间int left=0,right=nums.length-1;//右边界是可以取到的,所以不能为nums.length,这实际超出了数组长度while(left<=right){//左右边界可以相等,举个例子[1,1],这是正确的int mid=left+(right-left)/2;if(nums[mid]==target){return mid;}else if(nums[mid]<target){left=mid+1;//左边界可以取到,这里排除了mid,所以左边界取mid+1}else if(nums[mid]>target){right=mid-1;//与上面同理}}return -1;

3.左闭右开区间 [left, right)

//左闭右开区间int left=0,right=nums.length;//右边界取不到,这里可以为nums.lengthwhile(left<right){//左边界能取到,右边界取不到,所以左右边界不能相同,例如[1,1)是不对的int mid=left+(right-left)/2;if(nums[mid]==target){return mid;}else if(nums[mid]<target){left=mid+1;}else if(nums[mid]>target){right=mid;//右边界取不到,排除了mid之后,可以让右边界等于mid}}return -1;

搞清楚区间的能不能取到边界值

http://www.xdnf.cn/news/1022545.html

相关文章:

  • 如何关闭WordPress中的评论通知
  • PostgreSQL的扩展moddatetime
  • 数据结构与算法:贪心(一)
  • 性能测试报告怎么写?要包括哪些内容
  • RAG详解
  • 26考研 | 王道 | 计算机组成原理 | 五、中央处理器
  • Linux重置root用户密码
  • 基于springboot旅游管理系统+源码+文档+视频
  • 快递接口调用选择:快递鸟、快递100、阿里云大对比
  • Mybatis-增删改查-删除操作
  • 完美解决openpyxl保存Excel丢失图像/形状资源的技术方案
  • UE5场景漫游——开始界面及关卡跳转
  • 勒贝格测度、勒贝格积分
  • 如何实现一个登录功能?
  • Go语言中的可重入函数与不可重入函数
  • 30个供应链指标与计算公式汇总,直接套用
  • 什么是探索式测试,应该怎么做?
  • Qt 在界面上为多个按钮使用QButtonGroup
  • windows录频软件
  • da y30
  • Vulkan学习笔记5—帧缓冲和命令缓冲
  • Java单例模式的七种实现方式
  • 【DRAM存储器五十四】LPDDR5介绍--PHY简介和LPDDR5训练流程
  • leetcode21-合并两个有序链表
  • OpenAI api流式打印思考推理过程
  • 部署开源项目管理工具focalboard
  • ​​信息系统项目管理师-项目集管理 知识点总结与例题分析​​
  • 商务通用扁平风格主题PPT模版分享
  • 深入讲解一下 Nomic AI 的 GPT4All 这个项目
  • 完整强化学习教程:基于4x4网格世界的智能体探索之旅(一)