123
返回列表 发新帖
楼主: frank11118
跳转到指定楼层
上一主题 下一主题
收起左侧

Google 面經求問

🔗
chaosMonkey 2016-8-13 19:16:32 | 只看该作者
全局:
第一道题是不是可以先将树利用前序遍历序列化为字符串,这样两个相同的子树便是两个相邻的相同的子串,求出满足这个条件的最长的子串即可。第二题是杨氏矩阵,可以百度一下,除了这道题外,还有一题是在这种矩阵上序找第K大/小的值
回复

使用道具 举报

🔗
mnmunknown 2016-8-14 04:05:05 | 只看该作者
全局:
burself 发表于 2016-8-13 13:32
这个类似用preorder遍历序列化二叉树,需要注意的是所有空节点也一定要序列化进去。
所以第一种情况是: ...

哦哦哦我明白你的意思了~ 我刚看到这题也在想要不要把子树变成 substring 然后转化成一个 substring 问题,但是没联系到序列化可以确定唯一 tree 上。

在 pre-order 把树序列化了之后,我们的问题就变成了 “寻找字符串 S 中,最长的 non-overlapping identical substrings”. 但是 KMP 的 failure function 貌似只针对在 pattern 每个位置上 fail 了之后回滚到哪里,找最长的后缀使得其与自身前缀匹配,在这个问题上,如果树的节点值有重复,并且叶节点的表示符号一致的话,有些可能的情况要考虑:

最长的两个 substring 在整个树序列化之后的中间位置;
最长的两个 substring 在我查的几个 O(n) 算法中都是可以互相 overlap 的,但是在这题中我们需要 disjoint;

相关问题的一个帖子:
http://codeforces.com/blog/entry/12810

顺着这个思路我貌似还没有查到复杂度上面比较好的做法。。不知道有没有更好的 idea
回复

使用道具 举报

🔗
onerhao 2017-12-27 09:39:40 | 只看该作者
全局:
第一题是不是遍历,然后用最长公共字串解.
回复

使用道具 举报

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

本版积分规则

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