力扣题——3.二分查找

下面看几道力扣上面二分查找的题目

先看一下简单的

第704题:

力扣题——3.二分查找_第1张图片

 很简单,不多说,直接给出解答:

力扣题——3.二分查找_第2张图片

二分查找的具体讲解可以看我的另一篇博客

第35题:

力扣题——3.二分查找_第3张图片

 这题也是比较简单的,直接给出答案:

力扣题——3.二分查找_第4张图片

只需要注意一点,就是我们循环结束的时候,i与 j 会停在什么位置,这点一定要清楚。

第34题:

力扣题——3.二分查找_第5张图片

 这道题我一开始做错了,想复杂了,展示一下错误的案例:

力扣题——3.二分查找_第6张图片

后来想了一下,对代码进行分解,即分而治之,然后解答如下所示:

力扣题——3.二分查找_第7张图片

代码如下:

class Solution {
    public int[] searchRange(int[] nums, int target) {
        int x = left(nums,target);
        if(x == -1){
            return new int[]{-1,-1};
        }else{
            return new int[]{x,right(nums,target)};
        }
    }

    public int left(int[] a,int target){
        int i = 0;
        int j = a.length-1;
        int candidate = -1;
        while(i <= j){
            int m = (i+j)/2;
            if(a[m]

 其实就是两个Leftmost而已,不过这道题用了分治的思想

你可能感兴趣的:(数据结构与算法,leetcode,算法,职场和发展)