找出缺失的观测数据
 难度:中等
 
 
 纯纯的数学题,题目不难,注意细节的处理。
 1、通过平均数mean * (rolls的长度 + n)得到所有数据的总和,遍历已经存在的数据依次减去,得到缺失的观测数据的总和。
 2、现在我们有了总和 cnt 、缺失的数据个数n,首先判断数据是否合法,那么需要满足条件
 1、cnt > n (每个数据最小值为1)
 2、cnt < 6n (每个数据最大值为6)
 若上述条件满足,我们只需要将cnt平均分到每个数据即可。
代码如下:
    public int[] missingRolls(int[] rolls, int mean, int n) {
        int len = rolls.length;
        int cnt = (len+n) * mean;
        for (int roll : rolls) {
            cnt -= roll;
        }
        int[] res = new int[n];
        if (cnt > 6*n || cnt < n){
            return new int[0];
        }
        for (int i = 0; i < n; i++) {
            res[i] = cnt/(n-i);
            cnt -= res[i];
        }
        if (cnt%n != 0){
            res[n-1] = cnt;
        }
        return res;
    }
执行结果:成功
 










