LeetCode 2028. 找出缺失的观测数据
文章目录
- 一、题目
- 1、题目描述
- 2、基础框架
- 3、原题链接
- 二、解题报告
- 1、思路分析
- 2、时间复杂度
- 3、代码详解
- 三、本题小知识
- 四、加群须知
一、题目
1、题目描述
现有一份
n + m
次投掷单个 六面 骰子的观测数据,骰子的每个面从 1 到 6 编号。观测数据中缺失了n
份,你手上只拿到剩余m
次投掷的数据。幸好你有之前计算过的这n + m
次投掷数据的 平均值 。
给你一个长度为m
的整数数组rolls
,其中rolls[i]
是第 i 次观测的值。同时给你两个整数mean
和n
。
返回一个长度为n
的数组,包含所有缺失的观测数据,且满足这n + m
次投掷的 平均值 是mean
。如果存在多组符合要求的答案,只需要返回其中任意一组即可。如果不存在答案,返回一个空数组。
k
个数字的 平均值 为这些数字求和后再除以k
。
注意mean
是一个整数,所以n + m
次投掷的总和需要被n + m
整除。
样例输入:rolls = [3,2,4,3], mean = 4, n = 2
样例输出:[6,6]
2、基础框架
- C++ 版本给出的基础框架代码如下:
class Solution {public:vector<int> missingRolls(vector<int>& rolls, int mean, int n) {}
};
3、原题链接
LeetCode 2028. 找出缺失的观测数据
二、解题报告
1、思路分析
(1)(1)(1) 总点数 = mean * (n + m)
,m
个数的和等于 sum(rolls)
。
(2)(2)(2) 那么,剩下的 n
个数的和就是:mean * (n + m) - sum(rolls)
。
(3)(3)(3) 每个数字的范围是 [1,6][1, 6][1,6],说明这 nnn 个数的范围是:[n,6n][n, 6n][n,6n]
(4)(4)(4) 于是,得到不等式:n≤mean∗(n+m)−sum(rolls)≤6nn \le mean * (n + m) - sum(rolls) \le 6nn≤mean∗(n+m)−sum(rolls)≤6n 如果数据满足以上不等式,则必然能够找到一组解。
(5)(5)(5) 从 1 到 6 进行枚举,贪心每个骰子的点数,求解。
2、时间复杂度
最坏时间复杂度 O(6n)O(6n)O(6n) 。
3、代码详解
class Solution {public:vector<int> missingRolls(vector<int>& rolls, int mean, int n) {int i = 0;int sumM = 0;int m = rolls.size();for(i = 0; i < m; ++i) {sumM += rolls[i];}int total = mean * (n + m) - sumM;int need = n;vector< int > ret;if(n <= total && total <= n*6) {}else {return {};}while(n--) {for(i = 1; i <= 6; ++i) {if(n <= total - i && total - i <= n*6) {ret.push_back(i);break;}}total -= i;}return ret;}
};
三、本题小知识
遇到问题,先把它用数学的方法分析出来,逐渐把问题想清楚。
四、加群须知
相信看我文章的大多数都是「 大学生 」,能上大学的都是「 精英 」,那么我们自然要「 精益求精 」,如果你还是「 大一 」,那么太好了,你拥有大把时间,当然你可以选择「 刷剧 」,然而,「 学好算法 」,三年后的你自然「 不能同日而语 」。
那么这里,我整理了「 几十个基础算法 」 的分类,点击开启:
一:题目 现有一份 n + m 次投掷单个 六面 骰子的观测数据,骰子的每个面从 1 到 6 编号.观测数据中缺失了 n 份,你手上只拿到剩余 m 次投掷的数据.幸好你有之前计算过的这 n + m 次 ... 程序员面试金典--5.7找出缺失的整数 参考网址:https://www.nowcoder.com/profile/8185333/codeBookDetail?submissionId=125997 ... 给定一组连续的整数,例如:10,11,12,--,20,但其中缺失一个数字,试找出缺失的数字1 import java.util.*;2 3 public class Main {4 public s ... 约瑟夫环--递推公式详解(leetcode 1823. 找出游戏的获胜者) 约瑟夫环问题 约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知 n 个人(以编号1,2,3-n分别表示)围坐在一张圆桌周围. ... LeetCode 1823. 找出游戏的获胜者 文章目录 LeetCode 1823. 找出游戏的获胜者 题目描述 一.解题关键词 二.解题报告 1.思路分析 2.时间复杂度 3.代码示例 2.知识点 ... 文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述 链表中的 临界点 定义 ... 转载自 玻璃猫 程序员小灰 小灰一边回忆一边讲述起当时面试的情景...... 题目:一个无序数组里有99个不重复正整数,范围从1到100,唯独缺少一个整数.如何找出这个缺失的整数? 解法一: 创建一个 ... 文章目录 1. 题目 2. 解题 1. 题目 给你一个整数数组 digits ,其中每个元素是一个数字(0 - 9).数组中可能存在重复元素. 你需要找出 所有 满足下述条件且 互不相同 的整数: 该 ... 文章目录 1. 题目 2. 解题 1. 题目 一个 2D 网格中的 顶峰元素 是指那些 严格大于 其相邻格子(上.下.左.右)的元素. 给你一个 从 0 开始编号 的 m x n 矩阵 mat ,其中 ...LeetCode 2028. 找出缺失的观测数据相关推荐
最新文章
热门文章