class Solution {
public:
int search(vector<int>& nums, int target) {
if(nums.empty()) return -1;
if(nums[0] == target){
return 0;
}
int index0 = 0;
int index1 = nums.size() - 1;
int i = (index0 + index1 - 1) / 2;
while(index0 < index1){
if(index0 < index1 - 1){
if(target < nums[i]){
index1 = i;
}else if(target > nums[i]){
index0 = i;
}else{
return i;
}
}else{
if(target == nums[index0] || target == nums[index1]){
return target == nums[index0] ? index0 : index1;
}else{
return -1;
}
}
i = (index0 + index1) / 2;
}
return -1;
}
};
相关文章
- 02-10二分查找法demo
- 02-10Python——递归、二分查找算法
- 02-10使用二分查找法,查找一个有序的int[]中的某个数,并返回下标位置,如果不存在返回-1
- 02-10【二分查找】162. 寻找峰值
- 02-10【JZ-11】旋转数组的最小数字(二分查找)
- 02-10HDU1025-最长上升子序列(LIS)模板题+O(nlogn)二分查找优化
- 02-10leetcode(34)---在排序数组中查找元素的第一个和最后一个位置(二分查找)
- 02-10C++二分查找算法演示源码
- 02-10涉及到数组、字符串的分治,二分查找等时,二分时候的边缘值怎么计算?到底是该取n/2还是n+1/2还是n-1/2?以leetcode旋转矩阵为例,详细解读!
- 02-10【二分查找】 跳石头NOIP2015提高组 D2T1