链接:
链接: leetcode2028.找出缺失的观测数据.
问题描述
题目分析:
1. 这个题想让我们干哈
返回一个数组ret
ret+rolls这两个数组要能:
里面的数字之和等于
(rolls里面的数字之和+ret里面的数字之和)/(rolls和ret数字个数) == mean
2.需要注意的
这个题目对我们的返回数组里面的值分布没有要求
所以我们就随机返回即可
3.代码思路
详情见代码注释
4.遇见问题:
- 注意边界
- 返回空数组用 {}
代码:
class Solution {
public:
vector<int> missingRolls(vector<int>& rolls, int mean, int n) {
int now = 0;//rolls里面的数字之和
for(int i = 0;i<rolls.size();i++)
now+=rolls[i];
int need = mean*(rolls.size()+n)-now;//需要多少数字
if(need<n || need>n*6)//当不符合条件时
return {};
vector<int> ret(n,1);//创建返回数组,并给里面每个值赋1
need-=n;
for(int i = 0;i<n;i++)//给返回数组里面赋值
{
if(need == 0)//剩下的数字不能分配时
return ret;
else if(need>=6){//大于一个骰子的最大数字时
ret[i]+=5;
need-=5;
}
else{
ret[i]+=need;//最后分配的一个骰子
need = 0;
}
}
return ret;
}
};