楼主: mc422
跳转到指定楼层
上一主题 下一主题
收起左侧

Facebook onsite面经

🔗
gosteve 2015-11-2 09:24:37 | 只看该作者
全局:
键盘那题的followup也太难了吧 .. = =
回复

使用道具 举报

🔗
akluffy 2015-11-11 12:23:05 | 只看该作者
全局:
key1(3), key2(1), key3(2), ABCDEF的frequencey: [3,3,3,2,1,1], 结果是:ADF->key1, B->key2, CE->key3

follow up确实很难。如果不看followup的话,即character没有顺序,可以随便排的话,那就按照frequency排序,然后把frequency高的character放到key的低位,一位一位往下面放就可以了


回复

使用道具 举报

🔗
fame 2016-2-23 06:41:50 | 只看该作者
全局:
第二题用extra memory就是counting sort吧,两次遍历数组
回复

使用道具 举报

🔗
returning 2016-3-27 01:08:18 | 只看该作者
全局:
Linzertorte 发表于 2015-7-28 05:52
Followup 2应该是动态规划。  
http://www.acmerblog.com/POJ-1404-I-Keyboard-blog-387.html

第一题的followup确实是dp,但是我觉得你这个链接写的不是很清楚,其实只需要N^2的空间和N^3的时间。

需要引入一个辅助数组Status[I][J], 其存储的是,从第I个键开始后面J个连续存放在相同键盘上时对结果的贡献,需要N^2时间获得这个数组。

有了这个数组,再引入一个数组Result[L][K], 存储的就是前L个字符结束于K个键对应的结果。很明显:
Result[L][K] = min_U (Result[L][K], Result[U][K-1] + Status[U+1][L-U])

时间开销是N^3,但是空间开销是2*N^2,你给的链接是三维数组dp,逻辑很容易混淆。

其实这题有点像lintcode copy books.
回复

使用道具 举报

🔗
Ruby2333 2017-9-25 00:12:03 | 只看该作者
全局:
returning 发表于 2016-3-27 01:08
第一题的followup确实是dp,但是我觉得你这个链接写的不是很清楚,其实只需要N^2的空间和N^3的时间。

...

这种解法应该就是面试官想要的解法,不过面试时遇到这题,就算知道是dp,思路明晰,需要考虑的边界条件还是特别多,只能说楼主特别倒霉。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表