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

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

题目描述:一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。

这道题的限制条件比较多,首先是所有的数字都是唯一的,而且这些数字是有序的,这样可以通过遍历来获得没有出现的数字。通过比较某个元素和它的下一个元素之间的差值是否是1,可以判断缺少哪个元素。但是在遍历的时候要考虑边界情况,如果第一个数字不为0,直接可以返回0作为答案。如果第一个元素是0,就通过遍历得到缺失的数据。以下是我的解答:

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int i=0;
        if(nums[0]!=0)return 0;
        for(i=0;i<nums.size()-1;i++){
            if(nums[i]+1!=nums[i+1])break;
        }
        return nums[i]+1;
    }
};

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注