leetcode简单剑指 Offer 53 - II. 0~n-1中缺失的数字

Posted qq_40707462

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode简单剑指 Offer 53 - II. 0~n-1中缺失的数字相关的知识,希望对你有一定的参考价值。


思路:二分
如果nums[n]==n,则表示在正确的位置,不等于的话表示有缺

class Solution {
    public int missingNumber(int[] nums) {
        //找左边界的二分法
        int left=0,right=nums.length-1;
        while(left<=right){//left<right的话,[0]这种没法处理
            int mid=(left+right)/2;
            if(nums[mid]==mid) left=mid+1;
            else right=mid-1;//不相等的话缺得肯定是前面的
        }
        return left;
    }
}

注意边界问题,需要left<=right而不是left<right,否则比如[0],会输出left=0,但答案应当是1
同理,if else 的顺序不能变,否则[0]这种没法mid-1

以上是关于leetcode简单剑指 Offer 53 - II. 0~n-1中缺失的数字的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode(剑指 Offer)- 53 - I. 在排序数组中查找数字 I

LeetCode(剑指 Offer)- 53 - I. 在排序数组中查找数字 I

LeetCode 剑指Offer 53 - I 在排序数组中查找数字I[二分法] HERODING的LeetCode之路

leetcode简单剑指 Offer 53 - II. 0~n-1中缺失的数字

剑指offer二分53-I. 在排序数组中查找数字

剑指offer二分53-I. 在排序数组中查找数字