首页 > 其他分享 >Leetcode简单题背后的数学规律 | LCP 11. 期望个数统计

Leetcode简单题背后的数学规律 | LCP 11. 期望个数统计

时间:2022-10-16 02:22:05浏览次数:82  
标签:11 期望 相同 LCP 元素 个数 选择 frac Leetcode

最近签到打卡,每日额外再刷两道题攒积分。遇到一个简单题LCP 11. 期望个数统计,挺有意思的,记录一下分析过程并重温概率学知识。

题目

给定n个数的数组scores,小 A 和小 B 负责对scores按从高到低选择元素,对于其中相同的元素会等概率选择。求 A 和 B选择的顺序中相同次序是同一元素的总个数的期望。

分析

首先很容易将数组划分为不同段,只出现一次的元素选择是完全一致的,只有出现至少2次的元素需要重新计算期望。不同段之间是独立的(从高到低选择),那么针对每一段重复k个元素来研究其期望,最终结果是各段期望之和。

子问题:长度为m的数组,A 和 B随机选择m次,求选择的排列中同一位置是同一元素的总个数的期望。

原问题这里每个元素值一样,但实际是考虑在原位置上是同一元素,则可以看作是不同值更方便。

进一步,可以固定其中一个人选择次序,求另一个人 m! 中情况中元素出现相同位置个数的期望。

很容易写出 k 位置个不相同时的答案(写错了!!!使k个位置互不相同的排列数并不是\({C_{m}^{k} (k!-1)}\)):

【【【【分析错了 忽略该部分】】】】
概率为

\[\frac {C_{m}^{k} (k!-1)}{m!} \]

期望为

\[\frac {C_{m}^{k} (k!-1)}{m!}(m-k) \]

整理得

\[\frac {C_{m}^{k} (k!-1)}{m!}(m-k)=\frac{(k!-1)(m-k)}{k!(m-k)!}=\frac{(k!-1)}{k!(m-k-1)!}=\frac{(1-1/k!)}{(m-k-1)!} \]

子问题答案

\[\sum_{k=2}^{m-2}=\frac{(1-1/k!)}{(m-k-1)!} + \frac 1 {m!}(注:k=0) \]

然后就不会化简了。
【【【【分析错了 忽略该部分】】】】

找规律

题目给定当 k=2 时结果为 1。 分析当 k = 3时的情况,看能否找出规律。

假设数组为 [1, 2, 3],B的选择会有 3!=6种,分别是

排列 相同元素个数 概率
[1, 2, 3] 3=(1+1+1) 1/6
[1, 3, 2] 1 1/6
[2, 1, 3] 1 1/6
[2, 3, 1] 0 1/6
[3, 1, 2] 0 1/6
[3, 2, 1] 1 1/6

结果:\(3*1/6+1*1/6+1*1/6+1*1/6=1\)

大胆猜测结果恒为一,直接提交代码:return len(set(scores)),AC!

期望计算

对于上表,如果对于 m 个数,依旧按 m! 种情况列出来统计求和,这将很难计算相同元素个数。当合并观察每个元素在原有位置上出现的总次数时,一切清晰了起来。

例如,1出现在第一位共 2次,2出现在第二位共 2 次,3出现在第三位共 2 次,每次的概率均为 1/6。

对于一般情况,m 个数,每个数出现在原有位置共 (m-1)! 次,总期望为

\[\sum^m\frac 1{m!} {(m-1)!} = \frac {m*(m-1)!}{m!} = 1 \]


(完)

标签:11,期望,相同,LCP,元素,个数,选择,frac,Leetcode
From: https://www.cnblogs.com/izcat/p/16795540.html

相关文章

  • 【LeetCode-769. medium】最多能完成排序的块
    ​​力扣​​ 解题报告:注意这种【根据一个要求,将数组分成多个区间】类模型的问题(比如汽车加油站、加法表达式求和),套路就这三步:1、初始化2、for循环或者while,里面三步  ......
  • P1186 玛丽卡
    #include<bits/stdc++.h>usingnamespacestd;constintinf=0x3f3f3f3f;intn,m;intd1[10001];intd2[10001];intv[10001];intd[10001];intpt[10001];intto......
  • 114. 二叉树展开为链表
    题目描述给你二叉树的根结点root,请你将它展开为一个单链表:展开后的单链表应该同样使用TreeNode,其中right子指针指向链表中下一个结点,而左子指针始终为null。展......
  • 刷题 LeetCode 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07.
    代码随想录LeetCode24. 两两交换链表中的节点carl链表#dummyNode#双指针#递归思路借助dummyNode简化判断条件使用双指针更清晰一些,两个指针分别指向要交换的两......
  • leetCode [844. Backspace String Compare]
    [844.BackspaceStringCompare](https://leetcode.cn/problems/backspace-string-compare/)栈此题一看就有一股浓浓的栈味儿,毕竟匹配问题可是栈的强项使用字符......
  • leetcode1480.一维数组的动态和
    1.题目描述给你一个数组nums。数组「动态和」的计算公式为:runningSum[i]=sum(nums[0]…nums[i])。请返回nums的动态和。2.示例示例1:输入:nums=[1,2,3,4]输......
  • 116. 填充每个节点的下一个右侧节点指针
    题目描述给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:structNode{intval;Node*left;Node*right;Node*n......
  • #yyds干货盘点# LeetCode 热题 HOT 100:最大矩形
    题目:给定一个仅包含 0和1、大小为rowsxcols的二维二进制矩阵,找出只包含1的最大矩形,并返回其面积。 示例1:输入:matrix=[["1","0","1","0","0"],["1","0","1","1......
  • 移除List的统一逻辑写法 LeetCode 203
    原理:通过创建一个新的结点,放在头结点的前面,作为真正头结点的前驱结点,这样头结点就成为了意义上的非头结点,这样就可以统一操作结点的删除操作。需要注意的是:这个新的结点是......
  • #yyds干货盘点# LeetCode 热题 HOT 100:柱状图中最大的矩形
    题目:给定n个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为1。求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例1:输入:heights=[2,1,5,6,2,......