查看: 3333| 回复: 16
跳转到指定楼层
上一主题 下一主题
收起左侧

[找工就业] Google 6月新鲜电面

🔗
| 只看该作者 |倒序浏览
全局:

2020(4-6月)-CS硕士+fresh grad 无实习或全职 | 网上海投|美国其他地区 码农类General全职@google

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
本帖最后由 Teddyw 于 2020-6-24 03:28 编辑

给你一些"alphabet blocks",每个block像筛子一个有6个面,每个面上有一个letter。函数inputs是一条message和一些blocks。
您好!
本帖隐藏的内容需要积分高于 200 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 200 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies


求大米,谢谢!
. .и

补充内容 (2020-6-24 08:09):
原题:蠡口/discuss/interview-question/267985/google-interview-construct-a-word-using-dice

评分

参与人数 6大米 +10 收起 理由
Jerry_37 + 1 很有用的信息!
lemoncorn1123 + 2 很有用的信息!
yourdoraemon + 2 店面这么难的...
zzz6222 + 2 欢迎分享你知道的情况,会给更多积分奖励!
丑猪宝 + 2 给你点个赞!

查看全部评分


上一篇:请问有人对Bain & Company SDE (Remote) 有了解吗?
下一篇:请问大家有用过Acadium这个网站来暂停OPT Grace period吗?
全局:
amgfan 发表于 2020/06/24 15:08:40. Χ
匈牙利算法是不是只能求一个最大匹配?
对的,只有一个。我看题主用的是 or,假设只需要一个解了

评分

参与人数 1大米 +1 收起 理由
amgfan + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

推荐
conghao2016 2020-6-24 15:51:41 | 只看该作者
全局:
这个题的DP解法属于极度冷门的吧- -匈牙利算法,这都属于比较高级的算法实现了....面试估计能给出dfs+backtrack解法就可以了....
回复

使用道具 举报

推荐
zzz6222 2020-6-24 07:53:20 | 只看该作者
全局:
丑猪宝 发表于 2020-6-24 06:09
backtracking?map建立每个字母对应的block, traverse message每个字母,然后找有这个字母的block加入path ...

我也觉得要backtracking, dp不可行,因为每个block明确规定只能用一次。
这道题应该可以reduce成Maximum Matchings in Bipartite Graphs,polynomial的实现超级复杂,面试应该就给个O(n!)的。
回复

使用道具 举报

全局:
二分图匹配?
回复

使用道具 举报

🔗
jyyzzj 2020-6-24 05:58:39 来自APP | 只看该作者
全局:
Dp,外层for blocks里层for那个message,,可用一维dp滑动就行
回复

使用道具 举报

🔗
丑猪宝 2020-6-24 06:09:12 | 只看该作者
全局:
backtracking?map建立每个字母对应的block, traverse message每个字母,然后找有这个字母的block加入path,以此类推不能使用已经使用过的block
回复

使用道具 举报

🔗
Teddyw 2020-6-24 06:10:11 来自APP | 只看该作者
全局:
jyyzzj 发表于 2020/06/24 05:58:39
Dp,外层for blocks里层for那个message,,可用一维dp滑动就行
你是说dynamic programming?具体怎么实现?或者我题目没解释清楚。比如上面那个例子,message是r和e两个字母。第三个block有r, 第一个block有e,所以返回第一个和第三个block,顺序无所谓。
回复

使用道具 举报

🔗
jyyzzj 2020-6-24 10:12:38 | 只看该作者
全局:
本帖最后由 jyyzzj 于 2020-6-23 21:16 编辑
Teddyw 发表于 2020-6-23 17:10
你是说dynamic programming?具体怎么实现?或者我题目没解释清楚。比如上面那个例子,message是r和e两个 ...

下午点开随便想的,首先是指数级应该不是最优解,而且得data range符合。
做法就先for block,然后for message的status,跟一维背包的滑动一样,保证每个item(block here)只用一次。
状压背包?哈哈
  1. n = len(message). 1point 3acres
  2. dp = [[] for _ in range(1<<n)]
    . Χ
  3. dp[0] = [[]]
  4. for bid in range(len(blocks)):. 1point 3 acres
  5.     ndp = copy.deepcopy(dp)
  6.     for status in range(1<<n):
  7.         for i in range(n): ..
  8.             if (1<<i) ^ status and message[i] in blocks[bid]:
  9.                 ndp[(1<<i) ^ status] += [blks + [bid] for blks in dp[status]]
  10.     dp = ndp
  11. ans = [[*map(lambda i: blocks[i], blks)] for blks in dp[-1]]
  12. print(ans)
复制代码

. check 1point3acres for more.

回复

使用道具 举报

🔗
rikoizz 2020-6-24 10:50:11 | 只看该作者
全局:
二分图建模:
分为 a,b 两类点,其中 a 类点表示 blocks,b 类点表示 message 上的每个字母。如果 block 存在 message 中的字母就从当前点向 b 类对应的点链接一条边。
之后求一个二分图最大匹配,如果匹配的结果等于 message 的长度,那么题目存在合法的解。那么就把每个 message 字母对应的 b 类点所对应的 a 类点对应的 block 加入答案就可以了。
匈牙利匹配算法时间复杂度 O(n^3)
回复

使用道具 举报

🔗
旧未来 2020-6-24 14:16:39 | 只看该作者
全局:
本帖最后由 旧未来 于 2020-6-24 14:22 编辑
rikoizz 发表于 2020-6-24 10:50
二分图建模:-baidu 1point3acres
分为 a,b 两类点,其中 a 类点表示 blocks,b 类点表示 message 上的每个字母。如果 block  ...

匈牙利算法有办法给出所有最大匹配的matching吗?还是只能给出达到最大匹配的一种matching?如果这个题目让给出所有的最大匹配,感觉也只能n!暴力枚举了把...
回复

使用道具 举报

🔗
amgfan 2020-6-24 15:08:40 | 只看该作者
全局:
rikoizz 发表于 2020-6-24 10:50
二分图建模:
分为 a,b 两类点,其中 a 类点表示 blocks,b 类点表示 message 上的每个字母。如果 block  ...

匈牙利算法是不是只能求一个最大匹配?
回复

使用道具 举报

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

本版积分规则

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