题目

房间里有N-1位群众和1位明星。每位群众都认识该明星,群众之间的认识情况未知,而该明星却不认识任何一位群众。假设你是机器人R2T2,具有问一个人是否认识另一个人的功能,每次耗费时间O(1)。请设计一个最有算法在这N个人中找出该明星,并分析复杂度。(不用写代码,不分析复杂度不得分)

解题思路

先分析人物的属性。
群众 —— 至少认识一个人
明星 —— 一个人都不认识,但被所有人认识
利用明星被所有人认识的特点,有方法一

方法一

最直观的,冒泡,从前往后比

设明星索引istar = 0

若1认识0,则1肯定不是明星,i++

若1不认识0,则0肯定不是明星,1可能是,istar = 1,i++

再比较2……

以此类推,

若i认识istar,则i肯定不是明星,跳过,i++

若i不认识istar,则istar肯定不是明星,更新istar = i,i++

最后留下的istar就是明星的索引

遍历一遍,比较n-1次,复杂度O(n)

方法二

两两分组。

考查一组的情况:

* 若相互认识,肯定都不是,丢弃

* 若相互不认识,肯定都不是,丢弃

* 若a认识b,b不认识a,则a肯定不是明星,b可能是,丢弃a,b进入下一轮

共n/2,每组需要2次比较

以此类推,最坏情况,每次都是第三种情况

n + n/2 + n/4 + n/8 + ... + 1 = 2n-1

复杂度是O(2n)

扩展

若有多个明星,明星之间相互认识,明星不认识群众,群众认识所有明星呢?

按照方法一,找出一个明星,然后遍历一遍,找出该明星认识的所有明星。

复杂度O(2n)

【阿里2013实习笔试】找明星相关推荐

  1. 【找实习啊找实习(一)】

    由于听闻今年的就业形势不好(淘宝限招等事件),搞得我也慌了,所以特别开始早点准备.由于之前错过了tx的校招让我后悔不已,所以现在基本给笔试和面试的,我都会去.庆幸的是51之前就已经拿到了两份offer ...

  2. 连个实习都找不到,我该怎么办

    在知乎上发了个帖子,也没多少人看,大概是我没有邀请那些大V回答吧. 现在搬过来,留作纪念, 程序员找不到实习怎么办? 本人研二,计算机专业,在一家小公司做过一点很水的C++项目,windows平台,G ...

  3. 4月21日云栖精选夜读:【校园头条】第1期:找实习、找工作时,让你脱颖而出的秘籍...

    你还在为寻找一个工作而苦苦追求吗?你想在面试的时候能脱颖而出吗?现在小编为大家准备了找工作的秘籍,这个秘籍一般人我可是不会告诉他的呢!要知道有时候你与工作的距离仅仅只有一个秘籍的差距,看完这个秘籍也许 ...

  4. 2019阿里暑期实习一面

    2019阿里暑期实习一面 问题1 快手与抖音有什么区别? 问题2 如何分析一款产品? 问题3 产品经理的工作有哪些? 问题4 你为什么想做产品经理? 总结 阿里投递的产品经理岗位.今天下午收到阿里的一 ...

  5. 2018春招实习笔试面试总结(PHP)

    2018春招实习笔试面试总结(PHP) 博主双非渣本计算机软件大三狗一枚,眼看着春招就要结束了,现将自己所经历的的整个春招做一个个人总结. 首先就是关于投递计划,博主自己整理了一份各大公司的春招信息, ...

  6. 计算机专业实习怎么找?大厂付费内推实习证明有用吗?

    计算机专业大学生找实习的难点就在于,市面上java培训机构出来的人技术高于计算机专业大学生,因而很多计算机专业大学生不得不考虑去培训机构学习技术.但是事实真的如此吗?怎么找计算机专业实习呢?大厂付费内 ...

  7. 阿里前端实习如何通过面试?2022年IT应届如何投递阿里

    导语:很多计算机专业大学生实习岗位偏向前端,一是前端实习岗位比较多,相比其他技术类岗位,实习薪资与技术要求没那么严格.阿里当前成为众多计算机专业大学生比较喜欢的企业之一,如何通过阿里前端实习面试?20 ...

  8. 阿里游戏实习生活(杂谈)

    记录一下自己进入阿里游戏实习到结束的生活 大概是11月份左右准备找实习了,所以就东奔西跑找面试,面试了几家有做c/c++程序的,软件测试的,期间大部分都被pass,小部分觉得不是很想去,最后阴差阳错进 ...

  9. 2015腾讯暑期实习笔试题目

    2015腾讯暑期实习笔试题目 2015腾讯暑期实习笔试题目 (1).层次遍历序列为ABCDEFG的二叉树,其中序遍历的序列是什么? (2).ABCABC为入栈的顺序,倘若出栈的顺序为ABCCBA,那么 ...

最新文章

  1. 【转载】Python的运行原理(编译过程及执行原理)
  2. MySQL事务的不可重复读
  3. 只开窗不镀锡_翡翠为什么要开窗??————开窗有哪几种?
  4. 用户偏好类结构化数据分析题参赛总结
  5. Spark集群搭建+基于zookeeper实现高可用HA
  6. C++Vector使用方法
  7. display:flex
  8. 辽宁沈阳计算机学校王斯琪,青春正好,理所当“燃”——沈阳万合技校开展2020-2021年度春季学期跳大绳比赛...
  9. shiro框架---关于多项目之间验证为什么需要共享session
  10. Serverless 的前世今生
  11. mysql中12e10等于多少_一篇文章看懂mysql中varchar能存多少汉字、数字,以及varchar(100)和varchar(10)的区别...
  12. 吴恩达神经网络和深度学习-学习笔记-36-网络中的网络以及1×1卷积
  13. 社交网络分析之关系图(原理+Python代码)
  14. Android 设置wifi共享电脑服务器资源
  15. 2012年托福听力真题词汇总结
  16. 阅读jeecms源码总结
  17. java structs教程_Java教程 实战学习Struts实例
  18. 快速实现微信公众号支付功能
  19. jq操作数组的常用方法
  20. python更新excel内容_[原创]使用 Python 读写 Excel 文件(一)更新

热门文章

  1. Direct3D 12——纹理——三角形插值:重心坐标
  2. 利用SPSS箱线图与Z分数法判别异常值的比较
  3. mysql最快导表,IIS通过ISAPI_Rewrite完美实现Wordpress伪静态 | 沉默过客
  4. Microsoft SQL Server 2000 下载地址汇总
  5. 2018.11.03 NOIP模拟 地球发动机(线性dp)
  6. NAT 网络地址转换
  7. OpenCV Java入门三 Mat的基本操作
  8. 天地图key申请_关于天地图官网资源的一些记录
  9. 汝之蜜糖,吾之砒霜— 聊聊软件开发中的最佳实践
  10. 2021年锅炉作业-工业锅炉司炉 (G1)考试题库