题目 
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。
示例 1:
输入: [0,1,3]
输出: 21
2
2
示例 2:
输入: [0,1,2,3,4,5,6,7,9]
输出: 81
2
2
限制:
1 <= 数组长度 <= 10000
题解 
java
public int missingNumber(int[] nums) {
    BiFunction<Integer, Integer, Integer> binarySearch = new BiFunction<Integer, Integer, Integer>() {
        @Override
        public Integer apply(Integer left, Integer right) {
            // 数字不是从0开始
            if (nums[left] != left) {
                return nums[left] - 1;
            }
            // 数字是从0开始且是连续的
            if (nums[left] == left && nums[right] == right) {
                return nums[right] + 1;
            }
            // 数字是从0开始且非连续的
            int mid = (right + left) >> 1;
            return nums[mid] == mid ? this.apply(mid + 1, right) : this.apply(left, mid);
        }
    };
    return binarySearch.apply(0, nums.length - 1);
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22