Leetcode——概率问题

169 阅读1分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路

1227.飞机座位分配概率

leetcode-cn.com/problems/ai…

只有当n=1时,一定会坐到自己的位置

其他情况下  ,要么就是坐对位置,要么就是坐错位置,所以概率为0.5。 

double nthPersonGetsNthSeat(int n){
                           //要么就是坐对位置,要么就是坐错位置,除了n=1的时候概率为1
return n==1?1.0:0.5;       //注意这里是== 而不是=
}

470.用rand7()实现rand10()

leetcode-cn.com/problems/im…

 

已知 rand N() 可以等概率的生成[1, N]范围的随机数
那么:
(rand X() - 1) × Y + rand Y()  ==》 可以等概率的生成[1, X * Y]范围的随机数
即实现了 rand XY()

int rand10() {
    while(true)
    {
    int num=(rand7()-1)*7+rand7();  //等概率生产[1,49]范围的随机数
    if(num<=40)return num%10+1;     //拒绝采样,并返回[1,10]范围的随机数
}
}

LCP 11.期望个数统计

leetcode-cn.com/problems/qi…

本题实质是就是统计数组中不同元素的个数。



int expectNumber(int* scores, int scoresSize){
int hash[1000001]={0};int sum=0;     //初始化哈希表
for(int i=0;i<scoresSize;i++)        
{
    hash[scores[i]]++;}              //统计每个数出现的次数
    for(int j=0;j<1000001;j++){
    if(hash[j]!=0)                   //不止出现一个的
    sum++;
}return sum;

开发者涨薪指南

48位大咖的思考法则、工作方式、逻辑体系