文章目录

  • 一、题目
    • 1、题目描述
    • 2、基础框架
    • 3、原题链接
  • 二、解题报告
    • 1、思路分析
    • 2、时间复杂度
    • 3、代码详解
  • 三、本题小知识
  • 四、加群须知

一、题目

1、题目描述

  现有一份 n + m次投掷单个 六面 骰子的观测数据,骰子的每个面从 1 到 6 编号。观测数据中缺失了 n份,你手上只拿到剩余 m次投掷的数据。幸好你有之前计算过的这 n + m次投掷数据的 平均值 。
  给你一个长度为 m的整数数组 rolls,其中 rolls[i]是第 i 次观测的值。同时给你两个整数 meann
  返回一个长度为 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;}
};

三、本题小知识

  遇到问题,先把它用数学的方法分析出来,逐渐把问题想清楚。


四、加群须知

  相信看我文章的大多数都是「 大学生 」,能上大学的都是「 精英 」,那么我们自然要「 精益求精 」,如果你还是「 大一 」,那么太好了,你拥有大把时间,当然你可以选择「 刷剧 」,然而,「 学好算法 」,三年后的你自然「 不能同日而语 」
  那么这里,我整理了「 几十个基础算法 」 的分类,点击开启:

LeetCode 2028. 找出缺失的观测数据相关推荐

  1. leedcode05 找出缺失的观测数据(思路加详解)

    一:题目 现有一份 n + m 次投掷单个 六面 骰子的观测数据,骰子的每个面从 1 到 6 编号.观测数据中缺失了 n 份,你手上只拿到剩余 m 次投掷的数据.幸好你有之前计算过的这 n + m 次 ...

  2. 程序员面试金典——5.7找出缺失的整数

    程序员面试金典--5.7找出缺失的整数 参考网址:https://www.nowcoder.com/profile/8185333/codeBookDetail?submissionId=125997 ...

  3. Java中找出缺失的数字

    给定一组连续的整数,例如:10,11,12,--,20,但其中缺失一个数字,试找出缺失的数字1 import java.util.*;2 3 public class Main {4 public s ...

  4. 约瑟夫环——递推公式详解(leetcode 1823. 找出游戏的获胜者)

    约瑟夫环--递推公式详解(leetcode 1823. 找出游戏的获胜者) 约瑟夫环问题 约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知 n 个人(以编号1,2,3-n分别表示)围坐在一张圆桌周围. ...

  5. LeetCode 1823. 找出游戏的获胜者

    LeetCode 1823. 找出游戏的获胜者 文章目录 LeetCode 1823. 找出游戏的获胜者 题目描述 一.解题关键词 二.解题报告 1.思路分析 2.时间复杂度 3.代码示例 2.知识点 ...

  6. LeetCode 2058. 找出临界点之间的最小和最大距离

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   链表中的 临界点 定义 ...

  7. 漫画算法:找出缺失的整数

    转载自 玻璃猫 程序员小灰 小灰一边回忆一边讲述起当时面试的情景...... 题目:一个无序数组里有99个不重复正整数,范围从1到100,唯独缺少一个整数.如何找出这个缺失的整数? 解法一: 创建一个 ...

  8. LeetCode 2094. 找出 3 位偶数

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数数组 digits ,其中每个元素是一个数字(0 - 9).数组中可能存在重复元素. 你需要找出 所有 满足下述条件且 互不相同 的整数: 该 ...

  9. LeetCode 1901. 找出顶峰元素 II(二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 一个 2D 网格中的 顶峰元素 是指那些 严格大于 其相邻格子(上.下.左.右)的元素. 给你一个 从 0 开始编号 的 m x n 矩阵 mat ,其中 ...

最新文章

  1. spring YML属性提示
  2. Beta阶段事后分析
  3. sihpostreboot 权限_记一次使用post请求重启TP-LINK TL-WDR7661路由
  4. zip unzip_zip和unzip上的Java要点
  5. 【POJ3264】Balanced Lineup,线段树入门
  6. 专访探真科技:云原生安全与业务迭代平衡术
  7. 18.MongoDB之balancer
  8. qt中socket通信流程图_Qt学习 之 Socket通信
  9. 关于在IE浏览器下按钮或者链接点击时出现outline的解决方法
  10. php接收表单post数据由于数据字段太多导致丢失的案例
  11. 小米闪购首页实战(HTML+CSS+JS)
  12. c语言的表示指数用什么符号,c语言的指数符号
  13. android 界面 edittext详解,Android 开发之EditText属性详解
  14. xul 和xml区别_使用Atom XML和Firefox XUL实施Web剪切和粘贴
  15. 电商运营数据分析常用分析指标--概述及流量指标
  16. 国内页游移植手游产品排名:现状和未来
  17. 桌面上的街舞之基础篇(09-04-29)
  18. 【学习笔记】人工智能导论
  19. 计算机专业术语session,Session
  20. 电脑可以上网,但是qq登陆不上去?

热门文章

  1. HDU 2196 求树上所有点能到达的最远距离
  2. igrt与imrt放疗哪个好_什么是放疗?
  3. datatable指定页码分页
  4. DB2中cursor的使用举例
  5. Springboot中数据库访问的两种方式之-JdbcTemplate
  6. 读取gpk mysql_MySQL之数据类型(惯用)_mysql
  7. PE值、PB值、ROE和DCF值分别代表什么意思
  8. 安装的PS显示没有足够内存。保存不成功。
  9. 如何在iPhone或iPad上裁剪和更改视频的长宽比
  10. 【微服务器集群】做毕设收尾阶段,如何创建微服务器集群来跑自己的项目?