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

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

遍历

找到值不等于索引的项

时间复杂度O(n),空间复杂度O(1)

class Solution {
    public int missingNumber(int[] nums) {
        int ans=0;
        for(ans=0;ans<nums.length;ans++)
        {
            if(nums[ans]!=ans)
            {
                break;
            }
        }
        return ans;
    }
}

 

二分查找

假如中间的值等于索引,说明缺失的数字不在左半部分,将left更新为mid,如果不等于索引,则证明缺失的数字在左半部分

时间复杂度O(logn),空间复杂度O(1)

class Solution {
    public int missingNumber(int[] nums) {
        int left =0,right=nums.length-1;
        while(left <= right)
        {
            int mid = (left+right)/2;
            if(nums[mid] == mid)
            {
                left = mid+1;
            }
            else
            {
                right = mid-1;
            }
        }
        return left;
    }
}

 

 

posted @ 2021-11-11 19:34  渴望成为大佬的菜鸡  阅读(29)  评论(0)    收藏  举报