美团2018春招笔试题解

美团前端笔试前面花了太长时间,后面只AC了第二道编程题,考完后想了下才发现第一道编程题真的好简单
另外,下次A题要截图,不然回忆题目真的很难记住,我只能给出题目大意。

第一题:
好像是讲一个概念叫做闭图,如果对于图中所有顶点都有d(u)+d(v)>=n,则这是一个闭图
第一行输入为n和m,n为图的顶点数,m为图的边数,接下来有m行,每一行输入为顶点u和v,代表一条边。
要求输出最多能够加多少边,能让图依旧是形成闭图。
输入:
2 1
1 2
输出:
0
输入:
4 4
1 2
2 3
3 4
4 1
输出:
2

解析:
闭图其实就是由哈密顿图改编过来的,有兴趣的话可以去了解下哈密顿图。让我们来理解下闭图的概念就是  任意两点的出度加入度大于或者等于n。
理解好题意后我们会发现,题目每次输入给出的图就是一个闭图。而我们需要做的是求出需要加入多少条边可以把题目给的图变成完全图
完全图的边数就是,题目给出的图的边数为m,则还差-m条边,也就是n*(n-1)/2-m条边。
所以这道题难点在于搞懂题意。

参考代码:
let n=readInt(),m=readInt(); let res=n*(n-1)/2-m; print(res);

第二题:
题目大意是关于刷题的,要给题目分个等级并且排序。
第一行输入为n,表示这n题要排序(按照题目名排序)。
然后有n行,每一行有题目名,提交次数X,通过次数Y。
0=<Y/X<=0.3,题目难度为5,
0.3<Y/X<=0.6,题目难度为4,
0.6<Y/X<=1,题目难度为3,
输出为排序好了题目名以及题目难度
题目输入均合理
输入:
math 100 90
algorithm 10 8
string 50 1
dp 100 50
输出:
algorithm 3
dp 4
math 3
string 5

参考代码:
let n=read_line();
n=parseInt(n);
let arr=[];
for(let i=0;i<n;i++){
    let line=read_line().split(" ");
    arr.push(line);
}
for(let i=0;i<n;i++){
    arr[i][3]=getLevel(arr[i][1],arr[i][2]);
    arr[i].splice(1,2);
}
for(let i=0;i<n;i++){
    for(let j=n-1;j>=i;j--){
        if(arr[i][0]>arr[j][0]){
            [arr[i],arr[j]]=[arr[j],arr[i]];
        }
    }
}
for(let i=0;i<n;i++){
    print(arr[i].join(" "));
}
function getLevel(X,Y){
    X=parseInt(X);
    Y=parseInt(Y);
    let f=Y/X;
    if(f>=0&&f<=(3/10)){
        return 5;
    }else if(f>(3/10)&&f<=0.6){
        return 4;
    }else if(f>0.6&&f<=1){
        return 3;
    }
}
嗯,今天还有珍爱网笔试,明天还有头条笔试,大家加油哦

#春招#
全部评论
第一题也没有AC,通过了80%。 我的想法比较简单,把录入的边都计入一个二维数组,并且记录以下每个顶点的度数计入一维数组。 遍历度数数组符合度数规则就拉到第二个里边看看有没有记录,没有的话结果++并且把新组成的边计入二维数组。 不知道没有通过的情况是怎样的。
点赞 回复 分享
发布于 2018-03-23 23:19
点赞 回复 分享
发布于 2018-03-23 19:56
原题是说给的图可能不是一个闭图,最少添加多少边可以为一个闭图
点赞 回复 分享
发布于 2018-03-23 17:51
第一题题目意思不是这个吧
点赞 回复 分享
发布于 2018-03-23 17:47
第一题其实只要动笔画画就很清楚了,我都记得高中等差数列有一样的送分题(’へ’)
点赞 回复 分享
发布于 2018-03-23 08:47
sorry,没看见输入均合理这句话
点赞 回复 分享
发布于 2018-03-23 07:33
排序直接字符串用arr.sort就可以,而且为什么没有查重还有检测x y值的代码,确定ac了吗?
点赞 回复 分享
发布于 2018-03-23 07:10

相关推荐

作为带过好几个实习生的老mentor,我见过有同学带着一腔热血来实习,最后却只带走一份单薄的履历。实习,是你从学校到职场最关键的过渡期,它的价值远不止一份实习证明。今天,我不讲大道理,就从我作为Mentor的视角,给你们几条能立刻用上的建议。记住,你的目标不是当个好学生,而是成为一个值得信赖的职场新人。一、&nbsp;心态转变:从被动答题到主动解题这是我最想强调的一点。学生思维是:等待老师布置明确的作业,然后完成它。职场思维是:主动发现模糊的问题,然后解决它。反面事例:接到任务后,埋头就做,遇到困难不吭声,直到截止日期才说“这个我不会”。Mentor期待的是啥呢?首先是确认目标:接到任务后,先用自己的话复述一遍:“我理解这个任务是要达成XX效果,对吗?”&nbsp;确保方向没错。然后是主动思考:不要只带问题来,要带“选择题”。问“这个数据我不会查,我尝试了A和B方法都失败了,您看是方法C更合适,还是我有其他没考虑到的渠道?”&nbsp;这证明了你的思考和努力。最后是闭环思维:任务完成后,主动告知结果:“XX任务已完成,数据/文件已发您邮箱,并同步在团队网盘了。其中有个小发现是……,供您参考。”&nbsp;让一切有始有终。二、&nbsp;沟通方式:实习生的很多错误,都源于“想当然”和“不敢问”。反面教材:在做一个PPT时,因为不确定公司模板,就套用了自己觉得好看的模板,结果不能用。那么怎么确认,怎么提问呢?第一个,不懂就问,但别重复问:第一次问,是学习;同样的问题问第三次,就是不用心。准备一个笔记本,把关键信息、操作流程、注意事项都记下来。第二个,及时汇报,别等追问:特别是遇到卡壳或可能延期时,一定要提前说。Mentor不怕你慢,就怕你失联。没事儿更新一下进度:目前已完成80%,但在XX环节遇到点阻力,正在想办法沟通等回复,预计今天下班前确定结果,到时候给您,这样说能让人极度安心。第三个,珍惜1on1机会:和Mentor的定期沟通,不是你被动接受批评,而是你主动获取信息和反馈的黄金时间。提前准备好:a)&nbsp;本周工作进展;b)&nbsp;遇到的困惑/挑战;c)&nbsp;希望学习的新技能;d)&nbsp;对团队业务的任何好奇。三、&nbsp;工作习惯:&nbsp;专业性体现在细节里职业素养不是空话,它藏在每一个你容易忽略的细节中。1.&nbsp;邮件/沟通软件礼仪:邮件:标题清晰(如【实习生XX-XX项目周报】),正文称呼得体,结尾有落款。别用“在吗?”开头。工作群:别发表情包刷屏,沟通事情简明扼要。收到任务或通知,回复“收到,谢谢”,这是基本的确认和尊重。2.&nbsp;文件管理与命名:我会观察实习生的桌面,看他们的使用习惯,乱糟糟的桌面说明他没条理。文件命名要使用统一的命名规则:日期_项目名_内容_版本_姓名。例如:20231027_秋招海报_初版_张三。这能为整个团队节省大量沟通成本。3.&nbsp;对待杂活的态度:复印、整理数据、会议纪要……这些dirty&nbsp;work是不可避免的。但优秀的人是能从中找到价值的:整理数据时,可以留意数据之间的关联或异常,做会议纪要时,可以梳理出会议的决策和待办事项。四、&nbsp;终极目标:带走三样东西1.&nbsp;一段能讲出STAR法则的实战经历:这直接决定了你未来求职简历的厚度。2.&nbsp;一位可以为你未来背书的Mentor/同事:好好表现,离职时保持联系,他们可能成为你未来求职的推荐人和内推渠道。3.&nbsp;对行业和岗位的真实认知:通过这次实习,你想清楚自己是更热爱这个行业,还是想赶紧跑路?这个答案,价值千金。最后,作为你们的Mentor,我想说:大胆去试,勇敢去问,别怕犯错。实习期是你犯错成本最低的时候。展现出你的靠谱、主动和思考,我们做Mentor的,会非常乐意把更核心的任务交给你,因为带你,也是在为团队培养未来的战友。希望这些建议能帮你少走弯路,打一场漂亮的实习战!
家族企业:实习一年比在大学多年都有用
第一次找实习,我建议__
点赞 评论 收藏
分享
评论
点赞
20
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务