2021年美团产品开发面试题

小编:管理员 2680阅读 2021.06.25

第1题:


95,88,71,61,50,()



95 - 9 - 5 = 81
88 - 8 - 8 = 72
71 - 7 - 1 = 63
61 - 6 - 1 = 54
50 - 5 - 0 = 45
40 - 4 - 0 = 36


第2题:


1,2,3.。。10球放入1,2,。。。。10个盒子里,恰好3个球与盒子标识不等,这样的方法有几种?



从标号为1,2,…,10的10个球中选出7个放到相应标号的盒中有10C7种,则剩下3个球的标号放在与其所在盒子的标号不一致的盒中、不妨设为1,2,3号球,则1,2,3号盒中所放球为2,3,1;3,1,2两种,共10C7*2种。


第3题:


1,2,3,4,5组成的无重复数字的五位数中,大于23145且小于43521的共有几个?



全部有5!=120个小于23145的有21xxx(3!=6个,1xxxx=4!=24个) 大于43521的有44xxx,45xxx,5xxxx,6+6+24=36个 120-24-36=60个,再去掉23145和43521自己,所以是58个。


第4题:


一次考试中,第一次大于等于80分的人数占70%,第二次75%,第三次85%,第四次90%,问四次考试中都80分的至少占?%



100-(100-70)-(100-75)-(100-85)-(100-90)=20(人)


第5题:


7人中派4人发言,甲乙至少一人参加,如果同时参加,不能相邻,那么问不同的发言顺序有几种?



总的排法 - 没有甲乙的 - 甲乙同时参加且相邻的A7取4 - A5取4 -(C5取2 ×A2取2 × A3取3)
=840 - 120 - 120
=600


第6题:


 实现二叉树每一个节点的左右子节点相互调换?



Status BiTree_Revolute(BiTree T)//左右子树交换
{
if(!T) return OK;
BitNode *temp;
if(T->lchild!=NULL&&T->rchild!=NULL)
{
  temp=T->lchild;
        T->lchild=T->rchild;
  T->rchild=temp;
}
BiTree_Revolute(T->lchild);
BiTree_Revolute(T->rchild);
return OK;
}


第7题:


一个台阶一共n级,一次可跳1级,也可跳2级,编程实现计算共有几种方法?并分析算法的时间复杂度



首先我们考虑最简单的情况:如果只有1 级台阶,那显然只有一种跳法,如果有2 级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1 级;另外一种就是一次跳2 级。
现在我们再来讨论一般情况:我们把n 级台阶时的跳法看成是n 的函数,记为f(n)。当n>2 时,第一次跳的时候就有两种不同的选择:一是第一次只跳1 级,此时跳法数目等于后面剩下的n-1 级台阶的跳法数目,即为f(n-1);另外一种选择是第一次跳2 级,此时跳法数目等于后面剩下的n-2 级台阶的跳法数目,即为f(n-2)。
因此n 级台阶时的不同跳法的总数f(n) = f(n-1) + f(n-2)。
我们把上面的分析用一个公式总结如下:
       /  1  (n=1)
f(n) =  2  (n=2)
       \  f(n-1) + (f-2)  (n>2)
分析到这里,相信很多人都能看出这就是我们熟悉的Fibonacci 序列。

参考代码:
[cpp]

/*----------------------------

Copyright by yuucyf. 2021.08.16

-----------------------------*/  

  

#include "stdafx.h"  

#include   

using namespace std;  

  

  

int JumpStep(int n)  

{  

    if (n <= 0)  return 0;  

    if (n == 1 || n == 2) return n;  

  

    return (JumpStep(n-1) + JumpStep(n-2));  

}  

  

int _tmain(int argc, _TCHAR* argv[])  

{  

    int nStep = 0;  

    cout << "请输入台阶数:";  

    cin >> nStep;  

    cout << "台阶数为" << nStep << ",那么总共有" << JumpStep(nStep) << "种跳法." << endl;  

    return 0;  

}  



第8题:


设工厂甲和工厂乙次品率为1%和2%,现在从工厂甲和乙中分别占60%和40%的一批产品里随机抽取一件,发现是次品,求该次品是由工厂甲生产的概率?



利用贝叶斯公式得P=(0.6*0.01)/(0.6*0.01+0.4*0.02)=3/7


关联标签: