Binary search
程序员文章站
2022-05-06 08:04:48
...
通用写法
public int findPosition(int[] nums, int target){
if(nums == null || nums.length == 0 ){
return -1;
}
int start = 0,end = nums.length-1;
while(start+1<end){
//等价于(start + end)/2,但这么写防溢出
int mid = start+(end-start)/2;
if(nums[mid] == target){
//不直接返回是因为若题目要求返回第一个出现的,则需继续进行比较而不能马上返回,此时令end=mid,反之若要求最后一个出现的,则令start=mid;
end =mid;
}else if(nums[mid]<target){
start = mid;
}else{
end = mid;
}
}
//若是要第一个出现的则先比较start,若要最后一个则就要先比较end
if(nums[start] == target){
return start;
}
if(nums[end] == target){
return end;
}
return -1;
}
转载于:https://www.jianshu.com/p/3a179a8aa268
上一篇: winform 常见问题
推荐阅读
-
LC 297 Serialize and Deserialize Binary Tree
-
基于Cloudera Search设计数据灾备方案
-
php array_search() 函数使用
-
荐 Java刷题笔记15:不同的二叉搜索树( Unique Binary Search Trees)
-
python正则表达式match和search用法实例
-
MySQL:Unsafe statement written to the binary log using statement format since BI
-
python 使用re.search()筛选后 选取部分结果的方法
-
使用 Python 中 re 模块对测试用例参数化,进行搜索 search、替换 sub
-
MySQL中的数据类型binary和varbinary详解
-
Elastic search集群新增节点(同一集群,同一 物理机)