left<=right or left<right
在一个没有重复数字的升序数组中查找某一个数值的位置,例如:
{-1,0,3,5,9,12} 找9出现的位置,结果为4
{3,5} 找5出现的位置,结果为1
public class Solution {public static void main(String[] args){int[] array={3,5};int target=3;System.out.println(gettarget(array,target));}public static int gettarget(int[] array,int target){int left=0,right=array.length-1;while (left<=right){ //注意这里是left<=right时int mid=(left+right)/2;if(array[mid]==target)return mid;else if(array[mid]>target)right=mid-1; //这里是调整 right=mid-1else left=mid+1; //这里是调整 left=mid+1}return -1;}
}
在一个有重复数字的升序数组中查找某一个数值的位置,例如:
{-1,0,3,5,7,8,9,9,9,9,12} 找9出现的第一个位置,结果为6
public class Solution {public static void main(String[] args){int[] array={-1,0,3,5,7,8,9,9,9,9,12};int target=9;System.out.println(gettarget(array,target));}public static int gettarget(int[] array,int target){int left=0,right=array.length-1;while (left<right){ //注意这里是left<right时int mid=(left+right)/2;if(array[mid]<target)left=mid+1;else if(array[mid]>target)right=mid-1; else right=mid; //否则会陷入死循环}return left;}
}
在一个有重复的旋转升序数组中找到最小值,例如:
{3,4,5,1,2} 找到最小值:1
{1,0,1,1,1} 找到最小值:0
public class Solution {public static void main(String[] args) {int[] array={1,0,1,1,1};System.out.println(minNumberInRotateArray(array));}public static int minNumberInRotateArray(int [] array) {//在旋转数组中找到最小值int left=0,right=array.length-1;while (left<=right){int midindex=(left+right)/2;int midnum=array[midindex];if(midnum>array[right])left=midindex+1;else if(midnum<array[right])right=midindex;else --right; //注意可能会出现重复}return array[left];}
}
未完待续;
Life is but a dream!
left<=right or left<right相关推荐
- <binding>和<operation>元素
<binding>和<operation>元素 Binding栏是完整描述协议.序列化和编码的地方,Types, Messages和PortType栏处理抽象的数据内容,而Bi ...
- Error: illegal invocation in <execute> or <revert> phase (action: element.updateProperties或Laber)
报错类似于:Error: illegal invocation in <execute> or <revert> phase (action: element.updatePr ...
- 2021-12-11 工作记录--Wechat applet-结合<van-popup>和<van-picker> 实现年份、月份下拉选择弹窗+禁止滚动穿透
结合<van-popup>和<van-picker> 实现年份.月份下拉选择弹窗 一.实现效果 二.实现代码 1.HTML attendance.wxml <!-- 年份 ...
- 顺序表基本操作<小白一听就懂!!!><超详细><接地气>
顺序表基本操作<小白一听就懂!!!><超详细>&&<接地气> ***小编前言*** 完整代码 // 头文件 //主函数 // 初始化 /*运用指针* ...
- c#_List<T>(IEnumerable<T>)
下面的示例演示了对 List<T> 范围执行操作的类的构造函数和各种方法 List<T> . 创建一个字符串数组,并将其传递给构造函数,并用数组的元素填充该列表. Capaci ...
- HTML <label>标签</label>中的“ for”属性有什么作用<label>?</label>
本文翻译自:What does "for" attribute do in HTML tag? I wonder what is the difference between th ...
- linux shell mv/cp 错误: will not overwrite just-created <filename> with <sameFilename> 解决方法
运行shell脚本时,mv/cp时出现如下提示: mv: will not overwrite just-created <filename> with <sameFilename& ...
- mapper中 <include refid=“XXX“></include>标签 <sql id=“XXX“>标签
引言 include标签用法是引用sql片段 sql标签 是书写sql片段 被include 引用的 <sql id="query_where"><where&g ...
- maven <type>pom</type><scope>import</scope>
我们知道Maven的继承和Java的继承一样,只能单继承,无法实现多继承,你是否想过我们如果要继承多个父模块的时候应该怎么做呢?或许你会想只往一个父模块中添加jar包依赖,只继承一个父模块就可以了,但 ...
- 《JVM系列》深入浅出类加载机制中<init>和<Clinit>的区别【一篇即可搞懂初始化机制】
文章目录 前言:init和Clinit怎么产生的? 1.init方法 1.1.init方法什么时候被调用?用来做什么? 1.2.那么实例变量赋值操作.非静态代码块.构造器这三者,哪一个会先执行呢? 1 ...
最新文章
- python实现找零钱_找零钱的最优步骤 探究(python)
- MySql错误处理(三)- 错误处理的例子
- 数据库MYSQL学习系列二
- 可以给img元素设置背景图
- 内存分段分页机制理解_深入理解虚拟机,JVM高级特性-自动内存管理机制
- elasticsearch mapping之index
- 2M线路保护实现与应用
- Python 第五天
- linux 离线安装中文,linux离线安装及配置redis-Go语言中文社区
- DxO FilmPack 5教程:对照片进行艺术渲染,使其具有专业电影的色彩和颗粒感
- VMWare 虚拟机安装及新建虚拟机
- arcgis api for js入门开发系列六地图分屏对比(含源代码)
- 用JavaScript刷leetcode(刷题 第一天)
- jqgrid本地数据例子_FMS财务系统:日常数据核对与处理
- wxWindows 程序编译选项设置统揽
- 使用python 批量修改图片分辨率
- ERROR 2002 HY000 Can't connect to local MySQL server thro
- java批处理框架 pdf_《Spring Batch 批处理框架》PDF 下载
- 淘宝客商品推广图片合成(包含二维码、图片、价格)
- 《阿凡达》的元宇宙帝国多久抵达现实?
热门文章
- 欧洲统一语言参考标准C1,CEFR(欧洲共同语言参考标准)与英语考试换算标准
- 【Delphi】阿里云OSS SDK D7 D2007 D2010 XE2 XE7 XE8 XE10跨平台 支持STS 支持媒体上传
- 以精益思想为产品方法
- 记录一下折腾Ubuntu 20.04部署lammps GPU加速 2*AMD 7742 1*NVIDIA 3090
- PxCook 像素大厨
- 测试工程师常用面试题
- 使用Realsense测试aruco_ros包
- 论文修改建议(WangLR 20211012 第一次通篇检查)
- 图像质量评估各项指标(一)
- 信号(2)信号处理器函数