面试题53 - II. 0~n-1中缺失的数字(Java)(二分查找变形)

1 题目

2 Java

2.1 方法一(二分查找变形)

class Solution {
    public int missingNumber(int[] nums) {
        // 若[0,1,3],最后定位的是,l==2,即l位缺失,值比索引大
        int l = 0, r = nums.length;
        while(l < r){                       // 根据l/r范围界定 决定 是否带=
            int m = (l + r) / 2;
            if(nums[m] == m)    l = m + 1;
            else if(nums[m] > m)   r = m;
        }
        return l;
    }
}

2.2 方法二(2.1优化)

class Solution {
    public int missingNumber(int[] nums) {
        // 若[0,1,3],最后定位的是,l==2,即l位缺失,值比索引大
        int l = 0, r = nums.length - 1;
        while(l <= r){                       // 根据l/r范围界定 决定 是否带=
            int m = (l + r) / 2;
            if(nums[m] == m)    l = m + 1;
            else if(nums[m] > m)   r = m - 1;
        }
        return l;
    }
}
发布了131 篇原创文章 · 获赞 0 · 访问量 2287

猜你喜欢

转载自blog.csdn.net/weixin_43969686/article/details/105026867