牛客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的主要内容,如果未能解决你的问题,请参考以下文章

二分查找-II(NC105/考察次数Top66/难度中等)

二分查找-II(NC105/考察次数Top66/难度中等)

牛客Top200---括号序列(java详解)

牛客Top200---判断回文(java)

牛客Top200---进制转换(java)

牛客Top200---大数加法(java详解)