牛客Top200---二分查找II
Posted 小样5411
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客Top200---二分查找II相关的知识,希望对你有一定的参考价值。
题目
import java.util.*;
public class Solution {
public int search (int[] nums, int target) {
//二分查找的思路,两个标志位left和right
//数组不能为空,然后执行二分查找循环,跳出的条件就是left>=right
//二分的思想,顾名思义就是二分,(left+right)/2,然后分别left和right缩减范围
if(nums == null || nums.length == 0){
return -1;
}
int left = 0;
int right = nums.length - 1;
while(left < right){
int mid = (left + right) / 2;//位运算除以2
if(nums[mid] < target){
left = mid + 1;
}else if(nums[mid] > target){
right = mid - 1;
}else{
//找第一次出现的就要让high=mid,让high来靠近left,这样最后left就是返回值
right = mid;
}
}
return nums[left]==target?left:-1;//别忘了还有一种情况跳出,那就是没有目标值target
}
}
以上是关于牛客Top200---二分查找II的主要内容,如果未能解决你的问题,请参考以下文章