复杂度O(logN) ,二分查找。

总结规律:缺失位置之前的元素值比其下标大1,缺失位置之后的元素值比其下标大2。

如果当前元素的值比其下标大1,则缺失元素 > 当前元素,到当前元素后面去找; (ps: 这里有一种特殊情况,当前元素为最后一个元素的时候)

如果当前元素的值比其下标大2,则缺失元素 < 当前元素,到当前元素前面去找。

public int getNotFoundNumber(int[] data) {  
    int start = 0, end = data.length-1; 
    int mid;  
    while (start  end) {  
        mid = (start + end)/2; 
        if (data[mid] - mid == 1) {
            if (mid == 98) {  
                return 100;  
            }  
            start = mid + 1;  
        }  
        if (data[mid] - mid == 2) {
            end = mid - 1;  
        }  
    }  
    return data[start] - 1; 
}