网易互动娱乐2016实习生笔试

难度:★★★

我知道网易互动娱乐实习生笔试题目的时候,实习生笔试已经结束了。同学说都没做出来,好奇之下尝试做了一下,感觉确实不容易,但是穷举法应该可以过一些测试用例的。

题目地址戳这里

题目1 :电子数字

这个问题应该是这三题里最简单的一道吧,要求求出可能的数列组合的个数。对于这题,我把问题转为两个步骤:

  1. 从输入列表中提取每个电子数字所占位置代表的潜在候选数字;
  2. 遍历各个数位上的候选数字,生成候选数字来比较,最终得出组合的个数。

生成候选数字的步骤我直接使用 HashSet 来做数列交集,在输入的时候就生成各个数位上的候选数字。如果说 HashSet 的 contains 方法是 O(1) 的,那么这步的复杂度应该是 O(k),总体来说就是 O(9k)。而对于第二步,遍历……遍历应该是可行的,毕竟题目规定了最多只是 5 位数,对于 1Ghz 的电脑来说,在 1s 内完全遍历 10^5 个数字组合也不难。

题目2 :源代码编译

源码编译这个题实际上我在做阿里移动推荐算法比赛的时候做过——整理文件的依赖关系并最终生成文件的编译顺序表。当时处理的是 SQL 文件依赖,因为算法比赛的时候各个人自己独立地创建表,而最终需要一份可以提交的 SQL 文件。当时没有考虑算法复杂度,这次考虑了一下,实际上就是一种带有特定依赖的排序。稍微修改一下快排的比较函数,应该很轻易就能解决这道题。可惜测评时间已过,无法验证了。

题目3 :画线

这道题有很好的应用背景——以前做游戏的时候也想过,怎样可以合并某些操作从而优化整个执行流程。不过以前也就想想,没实际执行过。

这道题的考虑也比较简单,每次获得输入后,求出线段的斜率 k ,找出之前已经输入的斜率为 k 的线段集合,找出该直线是否可以合并到已经输入的线段集合中。这里可以优化的地方估计是建立斜率 k 的线段集合的索引,使得新加入的线段可以快速地判断能否合并,这样,时间复杂度就可以近似线性了。不过,暴力解的话,应该就是 O(n^2) 。

我想,对于玩 ACM-ICPC 的同学来说,应该是小 case 吧,努力学习ing。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,792评论 0 33
  • 1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不...
    曲终人散Li阅读 3,407评论 0 19
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,597评论 25 709
  • 标签(空格分隔): 算法 C++ 笔试 第三题:描述小王最近在开发一种新的游戏引擎,但是最近遇到了性能瓶颈。于是他...
    认真学计算机阅读 1,964评论 0 8
  • 一个不小心,我死了。 死前的最后记忆是我在深夜的家中,对着发光的电脑屏幕,屏幕上是没有写完的小说。 没有任何的预兆...
    张铁钉阅读 3,843评论 85 151