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 ...
最新文章
- light oj 1011Marriage Ceremonies
- excel文件修复工具_Windows商店上架文件恢复工具!仅8.29MB,纯净无捆绑,80%修复率...
- matlab 思维数组_如何在Matlab中保存多维数组?
- Struts2框架原理
- 如何使用 C# 扩展方法
- 一位老工程师的忠告,切记!
- Zernike函数拟合曲面--MATLAB实现
- 栈的top指针指向哪里_数据结构-栈
- 【干货】神经网络SRU
- MATLAB(五) 图像处理--图像分割
- samkoon触摸屏软件sktool编程下载问题
- xp系统进不去2008服务器共享,xp系统设置访问Server 2008R2的共享不输入密码的方法...
- 关于三极管集电极电压1V以上后伏安特性曲线不右移
- 计算机控制技术第二章,微型计算机控制技术 赖寿宏版 课件 第二章.ppt
- layim php,Workerman+LayIM+ThinkPHP5的webIM,即时通讯系统 – ThinkPHP框架
- Oracle 监听器无法启动(TNS-12555,TNS-12560,TNS-00525)
- “大数据杀熟”?商家对数据的使用可能远超出想象
- 自己做量化交易软件(31)小白量化实战5--板块股票池与基本面选股
- 零基础入门网络渗透到底要怎么学?
- C# Winform 计算机原理模型机的设计——带超前进位加法器